基于Vue前端开发规范

1、目的

编写说明书目的是为了提高提高团队的协作能力、提高代码的复用利用率 、提升前端代码质量、提升前端项目后期维护性。

2、 命名规范

命名必须使用英语翻译,禁止使用中文音译。能够通过名称精准分析出当前内容。国际通用的名称,可视同英文。

2.1、 项目命名

全部采用小写方式, 以中划线分隔
• Positive: test-system
• Counter: test_system

2.2、目录命名

全部采用小写方式, 以中划线分隔,有复数结构时,要采用复数命名法, 缩写不用复数
• Positive: test/script/demo-script
• Counter: test/script/demoScript test/script/demo_script

2.3、图片文件命名

分为头尾两部分,用下划线隔开,头部分表示此图片的大类性质
• Positive: banner_yili_logo.png
• Counter: bannerYiliLogo.png banner-yili-logo.png

2.4、JS、CSS、SCSS、HTML文件命名

全部采用小写方式, 以中划线分隔
• Positive: render-dom.js / signup.css / index.html
• Counter: renderDom.js / UserManagement.html

2.5、 components 组件、类命名规则

全部采用大驼峰命名方式
• Positive: TestSystem
• Counter: testSystem

2.6、 函数命名规则

全部采用小驼峰lowerCamelCase风格,方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
• Positive: nameString
• Counter: nameString / nameString / nameString$ / name_string

2.7、 常量、变量命名

常量,使用全部大写, 以中划线分隔,力求语义表达完整清楚,不要嫌名字长。
变量,使用小驼峰命名。
• Positive: BANNER_LOGO_IMG / bannerLogoImg
• Counter: BANNER_LOGON / banner_logo_img

2.8、 命名严谨性

• 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
• 能够通过名称精准分析出当前内容。
• 正确的英文拼写和语法可以让阅读者易于理解,避免歧义。
• 纯拼音命名方式也要避免采用

3、 HTML规则

推荐使用 HTML5 的文档类型申明:建议使用text/html格式的HTML。避免使用XHTML。XHTML以及它的属性(application/xhtml+xml 在浏览器中的应用支持与优化空间都十分有限)。
• 规定字符编码
• IE 兼容模式
• 规定字符编码
• doctype 大写
• 缩进使用4个空格,嵌套的节点应该缩进
• 在每一个块状元素,列表元素和表格元素后,加上一对HTML注释。注释格式
• HTML5中新增很多语义化标签,所以优先使用语义化标签,避免一个页面都是div或者p标签

<!DOCTYPE html> 
<html> 
	<head> 
		<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta charset="UTF-8" /> 
		<title>Page title</title>
	 </head> 
	<body> 
		<!– company logo image-->
		<img src="images/company-logo.png" alt="Company" /> 
	</body>
 </html>

4、 Style规则

• 类名使用小写字母,以中划线分隔
• ID采用驼峰式命名
• scss中的变量、函数、混合、占位符采用驼峰式命名
• 应该尽量避免css中出现HTML标签
• 选择器链尽量使用直接子选择器(性能)
• 尽量使用缩写属性(性能)
• 省略0后面的单位
• 避免使用ID选择器及全局标签选择器防止污染全局样式
• Scss避免多层级嵌套

5、 JavaScript\TypeScript 规则

• 书写过程中, 每行代码结束必须有分号; 原则上所有功能均根据XXX项目需求原生开发, 以避免网上down下来的代码造成的代码污染(沉冗代码 || 与现有代码冲突 || …);
• 尽量避免使用存在兼容性及消耗资源的方法或属性, 比如eval() & innerText;
• 后期优化中, JavaScript非注释类中文字符须转换成Unicode编码使用, 以避免编码错误时乱码显示;
• 代码结构明了, 加适量注释(30%以上). 提高函数复用率;
• 注重与html分离, 减小reflow, 注重性能.
• 程序块缩进必须定义为4个空格数
• 不同逻辑、不同语义、不同业务的代码之间插入一个空行分隔开来以提升可读性
• 对象声明、数组声明,使用字面值创建,字面量代替构造器(性能)
• 优先使用es6+新增语法以及语法糖(代码优化、提高复用性)
• 关键字后必须有大括号(即使代码块的内容只有一行)
• 不要直接使用undefined进行变量判断;使用typeof和字符串undefined对变量进行判断
• 条件判断能使用三目运算符和逻辑运算符解决的,不要写太长的三目运算符。如果超过 3 层请抽成函数,并写清楚注释
• 对上下文this的引用只能使用self来命名
• console.log大量使用会有性能问题,所以在非webpack项目中谨慎使用 log 功能
• 善用浏览器回收机制以及手动资源释放

6、 Vue规则(基础)

vue项目规范以 Vue 官方规范 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范。
• 组件名应该始终是多个单词组成(大于等于 2),且命名规范为KebabCase格式(避免与html元素冲突)
• 组件文件名为PascalCase格式
• 基础组件文件名为base开头,使用完整单词而不是缩写
• 和父组件紧密耦合的子组件应该以父组件名作为前缀命名
• 在Template模版中使用组件,应使用PascalCase模式,并且使用自闭合组件
• 当在组件中使用 data 属性的时候 (除了 new Vue 外的任何地方),它的值必须是返回一个对象的函数。 如果直接是一个对象的话,子组件之间的属性值会互相影响。
• Prop定义应该尽量详细,必须以camelCase模式,必须指定类型、注释(表明其含义)、加上 required 或者 default
• 为组件样式设置作用域(scoped)
• 特性元素较多,应主动换行
• Template模板中使用简单的表达式,不允许Template模板内部代码中编写JavaScript逻辑代码
• 指令缩写(:表示 v-bind: \ @ 表示 v-on: \ # 表示 v-slot: ……)
• 必须为v-for设置键值key
• 需要非常频繁地切换,使用 v-show ;如果在运行时,条件很少改变,使用 v-if
• script 标签内部结构顺序:components > props > data > computed > watch > filter > 生命周期钩子函数(按其执行顺序) > methods

7、 Vue规则(路由)

vue项目规范以 Vue 官方规范 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范。
• 页面跳转数据传递使用路由参数
• 使用路由懒加载(延迟加载)机制(component: () => import('XXX.vue')
• path、children命名规范采用kebab-case命名规范。与vue文件的目录结构保持一致,方便找到对应的文件
• path除了采用kebab-case命名规范以外,必须以/开头,即使是children里的path也要以/开头
• name 命名规范采用KebabCase命名规范且和component组件名保持一致!(保持keep-alive特性,keep-alive按照component的name进行缓存,两者必须高度保持一致)

8、 ApiJS规则

• 文件、变量命名要与后端保持一致
• 此目录对应后端 API 接口,按照后端一个Controller一个ApiJS文件。若项目较大时,可以按照业务划分子目录,并与后端保持一致。
• Api中的方法名称与后端 Api Url保持一致
• Api中的每个方法要添加注释,并且详细说明请求参数、请求类型以及功能描述

9、 注释规则

注释率必须达到30%以上

9.1、 Html注释

<!--这儿是注释-->, '–'只能在注释的始末位置,不可置入注释文字区域

9.2、 css注释

/*这儿是注释*/

9.3、 JavaScript注释

• 单行注释使用’//这儿是单行注释’
• 多行注释使用 /* 这儿有多行注释 /
• 函数注释使用必须标明作者、函数说明、时间、条件、回调 /
* @Author: {Author} * @Date: {createTime} * @description: {description} * @param: {param} * @return: {return} */

9.4、 必须添加注释的地方

• Api接口必须注释
• Vuex必须注释
• Vue文件中的data、template、methods必须注释,若文件较大添加start end注释
• 函数方法必须注释
• Scss函数以及常\变量必须注释

10、 UI组件库规则

• UI组件必须按需引入
• 单个项目只能使用一种UI组件库
• Vue项目必须使用ElementUI(PC)\Vant(移动端)

11、 组件规则

• 基础类型检测 (null 意思是任何类型都可以)
Type组件传参类型(必须包含)
Default组件默认值 (必须设置)
• 组件传参只能使用props、$emit、.syn、$attrs、$listeners、provide和inject
• 组件内必须按需加载依赖
• 组件内不允许写入任何请求
代码注释率必须达到30%以上

11.1、 可定义参数类型

• String
• Number
• Boolean
• Function
• Object
• Array
• Symbol
• Mor

12、 插件规则

• 插件中必须配置一个回调函数
• 各个传参参数必须定义类型
• 代码必须以ES6类(class)构造组件
• 函数名称方式必须以方法内容英语命名(驼峰命名方式)
• 代码注释率必须达到30%以上
• 组件内必须按需加载依赖
• 组件内不允许写入任何请求

12.1、 可定义参数类型

• String
• Number
• Boolean
• Function
• Object
• Array
• Symbol
• Mor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GGos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值