×

收藏些JS代码规范

作者:jquery2018.05.30来源:Web前端之家浏览:12423评论:0
关键词:规范

收藏些JS代码规范

1,前言:

本规范为针对mobile前端javascript的编码规范,其中部分规则只适用用移动端开发,并配合本团队自制的jshint和js-beautify工具进行检查和格式化。

1,变量与声明:

1.1 声明前使用var关键字

bad code

MyGlobalVariable;


good code

var myGlobalVariable;

1.2 变量在函数内部或循环控制条件之前提前声明

bad code

function test(){

for(var i=0;i<list.length;i++){

var item = list[i];

}

}

good code

function test(){

var i;

var item;

var len = list.length;

for(i=0;i<list;i++){

item = list[i];

}

}

1.3 私有变量函数前置 _ 标识

bad code

MyConstructor.prototype.private = function(){};

good code

function _private(){};

MyConstructor.prototype._private = _private;

1.4 变量命名规则 最好是具象的,布尔值需要带 is,has,can, 单位值需要带 _  ms,_s,_px 等

bad code

var height = $("#mydiv").height();

var delay = 3 * 1000;

var readYet = false;

good code

var height_px = $("#mydiv").height();

var delay_ms = 3 * 1000;

var isRead = false;

1.5 构造器首字母大写,方法变量需要遵循驼峰命名规则

bad code

function slidepage(){}

slidepage.prototype.resizepage = function(){};

good code

function SlidePage(){}

SlidePage.prototype.resizePage = function(){};

2,常量:

2.1 常量需要大写   

2.2. 常量需要定义在文件头部,并使用 _ 分割

bad code

var maxpeoplesize = 10;

good code

var MAX_PEOPLE_SIZE = 10;

3,分号与逗号:   

3.1 赋值,定义,返回值,方法调用后强制需要加分号   

3.2 定义变量时,不使用逗号   

3.3 objectMap 最后一个属性不带逗号

bad code

var arr = [],str = "",obj = {a:1,b:2,};

good code

var arr = [];

var str = "";

var obj = {a:1,b:2};

4,函数:   

4.1 函数内部不允许嵌套函数。  

4.2 函数内部不允许使用arguments.callee和arguments.caller

arguments.callee

caller - JavaScript

4.3 函数参数不得超过5个 (多于5个使用objectType代替)

bad code

function myTestFunc(a,b,c,d,e,f,g,h){

}

good code

function myTestFunc(params){

var a = params.a;

var b = params.b;

}

5,异常:   

5.1 允许使用try/catch

5.2 上线代码不允许使用debugger,console,alert等调试异常的关键字   

6,循环:   

6.1 循环使用for,不在非必要条件下不使用while

while的可读性不如for

6.2 循环一致使用自增

为了统一性,不允许倒着循环,除非业务需要

6.3 循环内不允许定义函数和变量

循环定义变量,函数消耗过大,尤其函数。

7,控制逻辑:   

7.1 控制条件内不要使用var定义变量   

7.2 分支超过5种的判断使用switch case,switch case需要带default    7.3 判断条件过长,使用变量标识

bad code

if( flag === 0 || $(".div").length > 0 || $("#id").hasClass("hide")){}

good code

var isRead = (flag === 0);

var hasDiv = $(".div").length > 0;

var isDisplay = $("#id").hasClass("hide");

if(isRead || hasDiv || isDisplay){}

7.4 判断中禁止使用yoda表达式

Yoda in Languages

7.5 判断使用严格类型判断 0,null,undefined ,固定字符 使用 ===    8,字符串:    8.1 允许多行字符,使用+或者\ 分割

bad code

var str = "<div><span><a href="#">myhref</a></span></div>";

good code

var str = "<div>"\

<span>\

<a href="#">myhref</a>\

</span>\

</div>";

9,原型:   

9.1 禁止对顶级对象进行原型修改

bad code

String.prototype.cutHtml = function(){};

good code

function cutHtml(){};

9.2 原型上不允许保存属性,只能保存方法

因为子类会被互相影响。

10,注释:   

10.1 文件开头必须要有文件说明注释,时间,作者

/**

*@author designsor#gmail.com

*@date 20150721

*@fileoverview 本文件用于xxx,实现了xxx方法,注意事项xxx

*/

10.2 多行单行注释都被允许   

10.3 可以使用jshint注释

/* jshint ignore:start */

不使用jshint检查的部分

/* jshint ignore:end */

// jshint ignore:line

单行忽略注释

11,特性:   

11.1 允许使用ES5中所有高级特性(移动端开发)

xiaojue/ES-shim · GitHub 这其中包含了一部分es6的,慎用,但是es5的现在原生移动端都已经支持。

尤其数组,对象,字符串,等便利方法。

es-shims/es5-shim · GitHub

11.2 允许使用eval和new Function 但前提是需要明确知道自己在做什么

临时允许使用,但是为了防止xss,用前最好联系一下 xiaojue 或者明确知道自己在做什么。

11.3 不允许使用with

11.4 代码统一遵循 use strict 规范   

12,面向对象   

12.1 统一使用构造器+原型方法进行面向对象方法开发,不使用拷贝继承 

12.2 多级继承,面向对象的高级用法,统一使用公用包中的class方法进行管理和控制

例子等模块化工具开发完成后补齐统一的class类,现在遵循第一条即可。

13,格式化:   

13.1 统一使用js-beautify和统一配置文件进行格式化  13.2 使用2个空格缩进  13.3 语法与风格检查使用jshint   

14,模块化:   

14.1 使用团队 #yuanfeng 的模块化加载工具开发多模块业务(开发中)  或者单独项目使用  litheModule/lithe · GitHub   

14.2 一个模块只干一件事    1. Javascript代码应符合jshint检验标准我们正在编写属于自己特殊定制的jshint标准配置,所有通过提交的代码 (非三方包,自身业务逻辑)都需要通过jslint检查。

在sublime下配置:

uipoet/sublime-jshint · GitHub

在vim下配置:

Shutnik/jshint2.vim · GitHub

在webstorm下配置:

WebStorm 10.0.0 Help :: Using JavaScript Code Quality Tools

例子:一个第三方插件不想使用jslint检查,跳过检查的方式如下:

在文件头加入

/* jshint ignore:start */

在文件结尾加入

/* jshint ignore:end */

2.Javascript代码 格式化 使用统一格式 js-beautify

所有代码提交之前需要进行格式化,统一使用js-beautify工具和我们统一的标准配置。

在sublime下配置:

enginespot/js-beautify-sublime · GitHub

在vim下配置:

maksimr/vim-jsbeautify · GitHub

在webstorm下配置:

WebStorm 10.0.0 Help :: Code Style. JavaScript

可能需要针对webstorm独立设置配置。

3,jshint和js-beautify的配置下载和如何生效

在项目根目录或者用户根目录放置配置文件:

.jshintrc配置如下:

gist.github.com/xiaojue

.jsbeautifyrc配置如下:

gist.github.com/xiaojue

您的支持是我们创作的动力!
温馨提示:本文作者系,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/guifan12983120830.html

网友评论文明上网理性发言已有0人参与

发表评论: