前端开发规范文档
前端开发规范文档
目录
概要
为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改
。
开发规范详细
目录结构规范
使用Vue-cli脚手架会搭建项目生成如下目录结构,添加文件时请在对应的位置进行添加。
├── index.html 入口页面
├── build 构建脚本目录
│ ├──build.js 生产环境构建(编译打包)脚本
│ ├──check-versions.js 版本验证工具
│ ├──utils.js 主要用来处理css类文件的loader
│ ├──vue-loader.conf.js 处理vue中的样式
│ ├── webpack.base.conf.js webpack基础配置
│ ├── webpack.dev.conf.js webpack开发环境配置
│ └── webpack.prod.conf.js webpack生产环境配置
├── config 项目配置
│ ├── dev.env.js 开发环境变量
│ ├── index.js 项目配置文件
│ ├── prod.env.js 生产环境变量
│ └── test.env.js 测试环境变量
├── dist 打包好的项目
│ ├── html 静态问件
│ ├── conf nginx配置文件
│ └── 其他 nginx需要的文件
├── node_modules 项目依赖模块
├── src 项目源码目录
│ ├── main.js 入口js文件
│ ├── app.vue 根组件
│ ├── components 公共组件目录
│ ├── assets 资源目录,资源会被wabpack构建
│ │ └── css 第三方css文件,全局css文件
│ │ └── font 字体
│ │ └── less 全局less
│ │ └── images 图片
│ │ └── logo.png
│ ├── routes 前端路由
│ │ └── index.js
│ ├── pages 前端页面文件
│ │ └── index.vue
│ ├── vuex 应用级数据(state)
│ │ └── store.js 分组数据存贮
│ ├── service 公共服务文件
│ │ └── service.js 处理公共请求,响应数据
│ │ └── util.js 处理公共js操作方法
├── static 纯静态资源,不会被wabpack构建。
└──
baseUrl.json 公共后台ip地址
文件、组件、组件结构命名规范
文件
文件名称应统一格式,使用驼峰命名法,开头的单词就是所属模块名字(例如:workbenchIndex、workbenchList、workbenchEdit)
组件
组件名以单词大写开头,当多个单词拼写成的组件时,采用驼峰式命名规则。一般是多个单词全拼,减少简写的情况,这样增加可读性。
组件应该都放到components文件夹下,单个页面独立一个文件夹,用来放相对应的VUE文件以及页面相关的样式文件,样式少可直接写到页面组件里边,这样更符合组件化的思想。
组件结构
组件结构遵循从上往下template,script,style的结构。
Template 规范
1、尽量使用以.vue结束的单文件组件,方便管理,结构清晰。
2、标签语义化,避免清一色的div元素
3、多特性,分行写,提高可读性。即一个标签内有多个属性,属性分行写。
4、自定义标签:使用自闭标签的写法。例如:,如果自定义标签中间需要传入slot,则写开始标签和结束标签,结束标签必须加/。
JS规范
1、在 Script 标签中,应该遵守 JS的规范和ES6规范。
2、创建公共的JS,封装公用的方法和工具类。
3、使用ES6风格编码源码,定义变量使用let,定义常量使用const,使用export,import模块化。
4、需要使用函数表达式的场合,尽量用箭头函数代替。因为这样更简洁,而且绑定了 this。
5、若循环中需使用函数,请将函数定义在循环外部而非内部,这样可以避免函数的反复创建。
6、Props定义:提供默认值,使用Type属性校验类型,使用Props之前先检查Prop是否存在。
7、JS中统一使用反引号(``)或是单引号(’’), 不使用双引号("")。
8、v-for 循环必须加上 key 属性,在整个 for 循环中 key 需要唯一,key一般使用index或者item.id。
9、避免 v-if 和 v-for 同时用在一个元素上(性能问题),以下为两种解决方案:
(1)将数据替换为一个计算属性,让其返回过滤后的列表。
(2)将 v-if 移动至容器元素上 (比如 ul, ol)。
10、无特殊情况不允许使用原生API操作DOM,谨慎使用this.$refs直接操作DOM。
11、函数中统一使用_this=this来解决全局指向问题。
CSS规范
1 、CSS的c lass命名尽量使用英语,不要使用汉拼,并且有意义。
2 、 使用单词命名时不要缩写,除非非常有名的单词。
3 、 规则命名中,一律采用小写加中划线的方式,尽量避免使用大写字母或 _ 例如(header-list)。
4 、 不允许通过1、2、3等序号进行命名。
5 、 避免class与id重名。
6、
省略值为 0 时的单位
,
如margin:0px 应写成 margin:0;
。
7、
如果 CSS 可以做到,就不要使用 JS
,比如鼠标划过和一些简单地动画效果
。
8、创建一个公共的CSS文件,存放公共的样式,不需要每个页面单独复制一份。
9、
使用 scoped关键字,约束样式生效的范围。
10、
避免使用标签选择器(效率低、损耗性能)。
11、sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域,JavaScript赋值等,两者的区别在于
1).编译环境不同
less是通过js编译 是在客户端处理
sass同通过ruby 是在服务器端处理
2)变量符不一样
less是用@,sass是用$
3)sass支持条件语句,可以使用if{}else{},for{}循环等等。而less不支持。
4)less没有输出设置,sass提供4中输出选项:nested, compact, compressed 和 expanded。
图片规范
1 、每个模块都要增加一个图片文件夹方便后期维护和处理,图片文件命名尽量跟模块意义的相同,尽量使用小写单词命名。
2 、 图片格式常用png,jpg,gif。
3、命名全部用小写字母,数字及中划线组合,其中不包含汉字、空格和特殊字符;尽量用易懂的词汇,便于团队其他成员理解;命名分头尾两部分,用中划线隔开,(例如:ad-left01.png、btn-submit.png)。
4、在保证视觉效果的情况下选最小的图片格式与图片质量,减少加载时间。
API管理规范
1、API接口地址统一管理,接口较少时可以单独写一个接口文件JS,页面中使用哪些引入哪些。
2、接口较多时,可对接口按模块进行分类,一个模块对应一个接口文件。
弹框,提示信息规范
弹框
1.普通新增和编辑弹框,上传文件弹框 宽度设置为50%。
2.弹框内容较多时 宽度设置为70%。
3.高度都为自适应,由弹框内容撑开。
确认弹框
使用Element-UI自带的MessageBox 弹框。
提示信息
使用Element-UI提供的Message 消息提示。
其他
1、文字超出容器需要进行 ‘…’ 省略。
2、图片显示 无特殊要求时,按原图宽高比显示,尽量不要变形。
3、涉及数据处理功能按钮,增加防频繁点击处理。
4、小图标尽量使用UI框架自带的icon图标。
5、页面按钮颜色,样式,功能尽量统一。
6、不同页面相同功能的提示文字尽量统一。
前端规范插件
1、HTML / tpl: HTMLHint
2、CSS / SCSS: StyleLint
3、JS / JSX: ESLint https://eslint.bootcss.com/docs/rules/