序言css
为了统一前端的技术栈问题,技术开发二部规定开发技术必须以Vue为主。html
为了更好的规范公司的前端框架,现以我前端架构师为主,编写如下开发规范,若有不当的地方,欢迎批评教育并慢慢改善该开发文档,谢谢合做。前端
咱们在作产品不仅是实现功能,还要考虑到之后的优化升级,那么就须要一套标准的代码规范,使得代码易懂,养成代码规范的习惯,有助于程序员自身的成长。那么咱们如今就来谈谈,前端代码的规范。vue
1、编码规范node
一、样式文件命名说明webpack
注:【css处理程序统一使用stylus,并放在“src/common/stylus”目录下】程序员
(1)重置样式:reset.stylusweb
(2)基础布局样式:base.stylusajax
(3)公共样式:public.stylusnpm
(4)变量样式:variable.stylus
(5)icon样式:icon.stylus
(6)混合类型(函数样式):mixin.stylus
2、样式规范化
(1)连字符CSS选择器命名规范
长名称或词组可使用“中横线”来为选择器命名。 不建议使用“_”下划线来命名CSS选择器,例:class=”page page-index”。
(2)使用16进制表示颜色值,除非表示的是透明度,例:#F62AB5
(3)如下经常使用的css命名规则;
page-hd、page-bd、page-ft、tit、cnt、desc、info、left-bar、search-bar
3、文件目录
(1)存放其它图片文件夹命名规范:imgaes
(2)存放广告图的文件夹banner
(3)文件名应该所有小写,多个单词如下划线“_”分开
(4)JS文件:驼峰命名方式,首字母小写,例:getUserInfo.js
(5)确保文档或模板中只包含html,把用到的样式都写到样式表文件中,把脚本都写到js文件中,采用外链引入形式,使页面的结构与行为分离。
四、 Javascript
(1)因vue脚手架有自动编译的功能,为了代码的整洁,每行js代码没必要带“;”做为结束,但需遵循一个语句一行的编码方式;
5、命名规范
(1)文件命名:以英文命名,后缀为.js,例:(共用)common.js,其余命名可根据模块需求命名;
(2)变量命名:驼峰式命名,原生JavaScript变量要求是纯英文字母, 首字母须小写,变量集中声明, 避免全局变量
(3)类命名:首字母大写, 驼峰式命名。eg:StudentInfo、UserInfo、ProductInfo;
(4)函数命名:首字母小写驼峰式命名。eg:getUserInfo;
(5)命名语义化,尽量利用英文单词或其缩写。
(6)常量:必须采用全大写的命名,且单词以_分割,常量一般用于ajax请求url,和一些不会改变的数据;
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。
例:const MAX_LENGTH = 20;const URL = 'http://www.star.com'
(7)变量:必须采用小驼峰式命名法,例:let maxCount = 10;
所有采用小写方式, 如下划线分隔。例:my_project_name
7、函数
命名方法:小驼峰式命名法;
命名规范:前缀应当为动词;
命名建议:可以使用常见动词约定。
动词 |
含义 |
返回值 |
can |
判断是否可执行某个动做(权限) |
函数返回一个布尔值。true:可执行;false:不可执行 |
has |
判断是否含有某个值 |
函数返回一个布尔值。true:含有此值;false:不含有此值 |
is |
判断是否为某个值 |
函数返回一个布尔值。true:为某个值;false:不为某个值 |
get |
获取某个值 |
函数返回一个非布尔值 |
set |
设置某个值 |
无返回值、返回是否设置成功或者返回链式对象 |
load |
加载某些数据 |
无返回值或者返回是否加载完成的结果 |
8、类 & 构造函数
命名方法:大驼峰式命名法,首字母大写;例:Person
命名规范:前缀为名称。
示例:
class Person {
public name: string;
constructor(name) {
this.name = name;
}
}
const person = new Person('mevyn');
9、类的成员
类的成员包含:
公共属性和方法:跟变量和函数的命名同样。
私有属性和方法:前缀为_(下划线),后面跟公共属性和方法同样的命名方式。
示例:
class Person {
private _name: string;
constructor() { }
// 公共方法
getName() {
return this._name;
}
// 公共方法
setName(name) {
this._name = name;
}
}
const person = new Person();
person.setName('star');
person.getName(); // ->'star'
10、注释规范
js 支持三种不一样类型的注释:行内注释、单行注释和多行注释:
命名建议:
// 用来显示一个解释的评论
// -> 用来显示表达式的结果,
// >用来显示 console 的输出结果,
示例:
function test() { // 测试函数
console.log('Hello World!'); // >Hello World!
return 3 + 2; // ->5
}
示例:
// 调用了一个函数;1)单独在一行setTitle();
示例:
/** 代码执行到这里后会调用setTitle()函数* setTitle():设置title的值
*/
setTitle();
说明:函数(方法)注释也是多行注释的一种,可是包含了特殊的注释要求,参照JSDoc
语法:
/** * 函数说明 * @关键字
*/
经常使用注释关键字:(只列出一部分,并非所有)
注释名 |
语法 |
含义 |
示例 |
@param |
@param 参数名 {参数类型} 描述信息 |
描述参数的信息 |
@param name {String} 传入名称 |
@return |
@return {返回类型} 描述信息 |
描述返回值的信息 |
@return {Boolean} true:可执行;false:不可执行 |
@author |
@author 做者信息 [附属信息:如邮箱、日期] |
描述此函数做者的信息 |
@author 张三 2015/07/21 |
@version |
@version XX.XX.XX |
描述此函数的版本号 |
@version 1.0.3 |
@example |
@example 示例代码 |
演示函数的使用 |
@example setTitle(‘测试’) |
/*** 合并Grid的行
* @param grid {Ext.Grid.Panel} 须要合并的Grid
* @param cols {Array} 须要合并列的Index(序号)数组;从0开始计数,序号也包含。
* @param isAllSome {Boolean} :是否2个tr的cols必须完成同样才能进行合并。true:完成同样;false(默认):不彻底同样
* @return void
* @author polk6 2015/07/21
* @example
* _________________ _________________
* | 年龄 | 姓名 | | 年龄 | 姓名 |
* ----------------- mergeCells(grid,[0]) -----------------
* | 18 | 张三 | => | | 张三 |
* ----------------- - 18 ---------
* | 18 | 王五 | | | 王五 |
* ----------------- -----------------
*/
function mergeCells(grid: Ext.Grid.Panel, cols: Number[], isAllSome: boolean = false) {
// Do Something
}
11、手机设计稿规范
设计稿的宽度通常状况下为宽度750px,在手机端页面编写的过程,将页面的最大宽度设置为750px,最小宽度为375xp,宽度为100%;即min-width:375px;max-width:750px;width100%;这样一来的话宽度在375到750之间是自适应的,当页面小于375时出现水平滚动条,当页面大于750时页面居中布局。
2、vue框架推荐
小程序:mpvue框架
H5游戏:vue
H5的UI框架:vux
推广类seo优化,如新闻,博客:nuxt.js
UI:element
APP:weex、Flutter
开发环境版本建议
技术 |
版本 |
查看命令 |
node |
8.12.0 |
node-v |
vue |
2.5.17 |
vue -V(大写) |
npm |
6.4.1 |
npm -v |
webpack |
4.19.1 |
webpack -v |
nuxt |
2.00 |
/ |
Element-ui |
2.47 |
/ |