生产级别的 vue

生产级别的 vue

    • 拆分组件的标识
    • 更好的组织你的目录
    • 如何解决 props-base 设计的问题
      • transparent component (透明组件)可减缓上述问题
      • provide 和 inject
    • vue-meta 在路由中的使用
    • 如何确保用户导航到某个路由自己都重新渲染?
    • 测试最佳实践
    • 如何制定团队的最佳实践 --- 规范
    • 可访问性
    • vue 代码最佳实践
    • 总结

花了 3 个小时,听了 front master 的 Production-Grade Vue.js 课程,课程不错,比较基础,但是也学到了一些东西,现在总结如下。

拆分组件的标识

哪种情况下拆分组件,有时候往往没有一个清晰的边界,以下几种情况,需要拆分组件:

  • 发现组件难以阅读

  • 难以简洁明确的描述组件职责

单一职责是软件设计的黄金法则。

  • 组件内单独一段代码具有自己的状态

组件内有一个状态不和其他状态产生关联,可拆分成单独组件,让组件更加清晰。

更好的组织你的目录

目录嵌套太深,不利于重构和浏览文件。

课程里推荐两层的目录,从命名上把相关的文件组织到一起,比如:

srrcomponentsDashboardHeader.vueDashboardHeader.test.jsDashboard.test.jsDashboard.vue

这样命名,组件被 vscode 聚拢到一起,方便阅读。

但是实际上命名一直是很多人难题,很多人也不愿意花点时间,思考命名,所以我更推荐最多三层目录,把相关组件组织到单独目录下,使用 index 导出变量:

srrcomponentsDashboard # 文件夹大写DashboardHeader.vueDashboardHeader.test.jsDashboard.test.jsDashboard.vueindex.js # 导出相关变量

或者

srrcomponentsDashboard # 文件夹大写Header.vueHeader.test.jsDashboard.test.jsDashboard.vueindex.js # 导出相关变量

如何解决 props-base 设计的问题

props-base 设计方法面对简单的功能时,可胜任,但是所有组件的功能都通过 props 来实现,props 就会变得很多,或者层层传递 props,造成 props 钻井。

具体来说,props-base 设计有这些问题:

  • 新功能会增加复杂性

  • 职责不单一

  • 在模板中会出现大量v-if

  • 难以扩展

  • 难以维护

  • 难以使用

transparent component (透明组件)可减缓上述问题

<template><div><input type="text" v-on="$listeners" v-bind="{...$attrs,...$props}" /></div>
</template>
<script>export default {inheritAttrs: false,}
</script>

通过 v-on="$listeners"v-bind="{...$attrs,...$props}" 可绑定多个事件和多个值。

provide 和 inject

通过 provide 和 inject 可轻松在跨级组件之间共享数据,减缓 props 钻井问题。

provide 和 inject 在 vue 插件中才能发挥其巨大威力,在业务项目中使用多了,会导致数据来源不清楚,应该少用。

vue-meta 在路由中的使用

这个网站的 seo 有关,感觉不够实用。

如何确保用户导航到某个路由自己都重新渲染?

<router-view :key="$route.fullPath" />

测试最佳实践

  • 不测 vue,比如测试生命周期函数的调用

  • 使用生成器生成模板代码,比如plop.js

如何制定团队的最佳实践 — 规范

  • 选择最佳实践

没有时间讨论最佳实践或者不知道有哪些最佳实践,就直接选择一个社区的规范。

  • 实现最佳实践

配置 lint prettier 等工具让规范自动约束开发者的行为。

linter — styleLint eslint markdownlint

formatter — prettier

代码模板生产成— plop

编辑器设置 — .vscode

  • 如何执行规范

保证你的情绪稳定、不要责怪他人、找到系统的解决方案,有能力,就要保护你的成员

可访问性

eslint-plugin-a11y可帮助检查。

vue 代码最佳实践

Vue Styleguidist

这个有点繁琐了,进度不允许写这么多注释。

总结

这个课程没有想象中的好,只推荐 vue 使用经验只有 2 年内的前端学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31738.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter的基本概念

一、主流测试工具 1&#xff0c;Loadrunner HP Loadrunner是一种工业级标准性能测试负载工具&#xff0c;可以模拟上万用户实施测试&#xff0c;并在测试时可实时检测应用服务器及服务器硬件各种数据&#xff0c;来确认和查找存在的瓶颈 支持多协议:Web(HTTP/HTML)、Windows…

Java项目:基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城【ssm+B/S架构+源码+数据库+答辩PPT+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能…

通信系统概述

1.定义 通信系统&#xff08;也称为通信网络&#xff09;是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展&#xff…

Ubuntu系统如何配置通过图形界面登录root用户

Ubuntu系统中的root账号默认是锁定的&#xff0c;但可以通过设置密码来启用。 需要注意的是&#xff0c;由于root用户具有对系统完全控制的权限&#xff0c;因此在使用root账户时应格外小心。一个错误的命令可能会导致系统损坏&#xff0c;这就是为什么Ubuntu默认不启用root账户…

微服务开发与实战Day08 - Elasticsearch

一、初始Elasticsearch 高性能分布式搜索引擎 1. 认识和安装 1.1 认识 Lucene是一个Java语言的搜索引擎类库&#xff0c;是Apache公司的顶级项目&#xff0c;由DougCutting于1999年研发。官网地址&#xff1a;Apache Lucene - Welcome to Apache Lucene Lucene的优势&…

集合:泛型深入

一.泛型的好处 1.统一了数据类型 2.把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。 二.泛型的细节 1.泛型中不能写基本数据类型 2.指定泛型的具体类型后,传递数据时,可以传入该类类型或者该类的子类类型 3.如果不…

shell脚本通过解析日志使用串口开关屏知识点整理

#!/bin/bash #logPath 写日志的存放路径 #logPath/home/workspace/tvs/trainborne logPath/home/firefly tmpFile$$ function getLogName() { #echo "$logPath/LCDController_"date "%Y%m%d000000.log" echo "LCDController_20240424000000.log&quo…

基于Raft算法实现的分布式键值对存储系统——学习笔记

目录 1 基于Raft算法实现的分布式键值对存储系统 1.1 模块 2 Raft 算法 2 .1 概念 2.2 raft角色&#xff08;先简单了解&#xff0c;方便后续阅读&#xff09; 2.3 raft想解决什么问题&#xff1f; 2.4 选举领导 2.5 领导者故障 附录&#xff1a; 参考文献&#xff1…

LeetCode 610, 28, 23

目录 610. 判断三角形题目链接表要求知识点思路代码 28. 找出字符串中第一个匹配项的下标题目链接标签使用 i n d e x O f ( ) indexOf() indexOf()思路代码 双指针思路代码 讲一讲双指针的缺点 23. 合并 K 个升序链表题目链接标签思路代码 610. 判断三角形 题目链接 610. 判…

电磁阀厂家:电磁阀结构设计需要考虑哪些方面?

随着科技的不断发展&#xff0c;电磁阀产品的应用范围愈发广泛。但在选购产品时&#xff0c;要注意产品的结构以及设计&#xff0c;以确保产品满足应用场景的各项要求。那么&#xff0c;电磁阀结构设计需要考虑哪些方面&#xff1f;接下来就让专业的电磁阀厂家来为大家简单介绍…

工具函数-算法

1. 实现四舍五入&#xff0c;保留两位小数 const v 0.0635455; // 方式1&#xff0c;保留2位小数&#xff0c;返回的是number格式 const formatted Math.round(v * 100) / 100; // 方式2&#xff0c;保留2位小数&#xff0c;返回的是字符串格式 const formatted v.toFixed(…

Vue67-Vuex简介

因为vuex是插件&#xff0c;所以&#xff0c;使用的时候&#xff1a;vue.use(插件名) 一、Vuex的意义和使用场景 红色的箭头&#xff0c;都是读数据。 若是&#xff0c;B、C、D都想修改A组件中的x数据&#xff08;写&#xff09;&#xff1a;此时&#xff0c;A组件就是数据的接…

人声分离的5个方法分享,从入门到精通,伴奏提取手拿把捏!

人声分离通常是音乐制作、混音和卡拉OK中常用的重要技术之一。它的核心是将乐器伴奏从原始音轨中分离出来&#xff0c;使得用户可以单独处理或重混音频&#xff0c;创造出清晰干净的伴奏轨道。若缺乏强大的音频剪辑软件或专业人声分离工具&#xff0c;这一过程往往会比较困难。…

Redis解析与应用实践

Redis是一个高性能的键值存储系统&#xff0c;它的应用非常广泛&#xff0c;包括缓存、消息队列、排行榜等。本文将深度解析Redis的核心特性&#xff0c;并结合实际代码示例&#xff0c;展示如何在不同场景下应用Redis。 Redis数据类型与操作 Redis支持多种数据类型&#xff…

实用至上:智能体/Agent 是什么

Agent 的起源 不做词义追源&#xff0c;仅从大众角度&#xff0c;这个事儿是去年初开始的&#xff0c;也就是 2023 年 2-3 月。标志性事件包括&#xff1a; AutoGPT 等开源项目的发布&#xff0c;这是第一批基于自然语言的 AI 自动化实践&#xff1a;你告诉它一个任务&#xf…

在 Docker Desktop 上设置 HTTP/HTTPS/SOCKS5 代理

在 Docker Desktop 上设置 HTTP/HTTPS/SOCKS5 代理 在使用 Docker Desktop 时&#xff0c;可能会遇到需要通过代理服务器访问外部网络的情况。本篇博客将会介绍如何在 Linux、Windows 以及 MacOS 上的 Docker Desktop 设置 HTTP/HTTPS 以及 SOCKS5 代理。 在 Linux 上设置代理…

最新的kali Linux源,解决apt update报错说没有数字签名

原因&#xff1a; 国内源的地址大部分都是http开头&#xff0c;这些地址早就无法使用。 解决方案&#xff1a; wget archive.kali.org/archive-key.asc //下载签名 apt-key add archive-key.asc //安装签名 另外&#xff0c;需…

Vscode远程ubuntu

远程连接 到这里vscode远程到ubuntu和关闭远程连接&#xff0c;已完成 配置python环境 在远程目录下新建.vscode隐藏文件夹&#xff0c;文件夹里新建一个 settings.json 文件&#xff0c; 先远程服务器看下conda下的python虚拟环境位置 settings.json位置及内容如下 测试pyt…

M12单端I/O预铸法兰插座A-code

M12单端I/O预铸法兰插座A-code概述 M12单端I/O预铸连接器A-code是一种常用于工业自动化领域的连接器件&#xff0c;主要用于传感器和执行器之间的信号传输。它的设计遵循国际标准IEC 61076-2-101&#xff0c;具有良好的防水防尘性能&#xff0c;通常达到IP67的保护等级。M12连…

2748. 美丽下标对的数目(Rust暴力枚举)

题目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length &#xff0c;如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 &#xff0c;则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回 nums 中 美丽下标对 的总…