成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

開發(fā)規(guī)范(四)JS規(guī)范

zhangyucha0 / 2546人閱讀

摘要:概述為提高團(tuán)隊(duì)協(xié)作效率,規(guī)范文件管理,方便項(xiàng)目后期維護(hù),提高代碼質(zhì)量,特制訂此文檔,前端開發(fā)人員必須遵照本規(guī)范進(jìn)行前臺(tái)頁(yè)面開發(fā)。

概述

為提高團(tuán)隊(duì)協(xié)作效率,規(guī)范文件管理,方便項(xiàng)目后期維護(hù),提高代碼質(zhì)量,特制訂此文檔,前端開發(fā)人員必須遵照本規(guī)范進(jìn)行前臺(tái)頁(yè)面開發(fā)。

基本規(guī)范

sublime Text3請(qǐng)安裝jshint插件以檢查JS編寫錯(cuò)誤;
安裝教程:使用lint進(jìn)行語(yǔ)法及風(fēng)格校驗(yàn)

異步加載文件命名

require.ensure([],function(){
    //異步加載內(nèi)容
},"ensure/業(yè)務(wù)模塊名_頁(yè)面名_異步方法名_1")

引號(hào)
最外層統(tǒng)一使用單引號(hào)。

// not good
var x = "test";

// good
var y = "foo",
    z = "
";

空行
以下幾種情況需要空行:
變量聲明后(當(dāng)變量聲明在代碼塊的最后一行時(shí),則無(wú)需空行)
注釋前(當(dāng)注釋在代碼塊的第一行時(shí),則無(wú)需空行)
代碼塊后(在函數(shù)調(diào)用、數(shù)組、對(duì)象中則無(wú)需空行)
文件最后保留一個(gè)空行

// need blank line after variable declaration
var x = 1;

// not need blank line when variable declaration is last expression in the current block
if (x >= 1) {
    var y = x + 1;
}

var a = 2;

// need blank line before line comment
a++;

function b() {
    // not need blank line when comment is first line of block
    return a;
}

// need blank line after blocks
for (var i = 0; i < 2; i++) {
    if (true) {
        return false;
    }

    continue;
}

var obj = {
    foo: function() {
        return 1;
    },

    bar: function() {
        return 2;
    }
};

// not need blank line when in argument list, array, object
func(
    2,
    function() {
        a++;
    },
    3
);

var foo = [
    2,
    function() {
        a++;
    },
    3
];


var foo = {
    a: 2,
    b: function() {
        a++;
    },
    c: 3
};

變量聲明
一個(gè)函數(shù)作用域中所有的變量聲明盡量提到函數(shù)首部,用一個(gè)var聲明,不允許出現(xiàn)兩個(gè)連續(xù)的var聲明。

function doSomethingWithItems(items) {
    // use one var
    var value = 10,
        result = value + 10,
        i,
        len;

    for (i = 0, len = items.length; i < len; i++) {
        result += 10;
    }
}

函數(shù)

無(wú)論是函數(shù)聲明還是函數(shù)表達(dá)式,"("前不要空格,但"{"前一定要有空格;
函數(shù)調(diào)用括號(hào)前不需要空格;
立即執(zhí)行函數(shù)外必須包一層括號(hào);
不要給inline function命名;
參數(shù)之間用", "分隔,注意逗號(hào)后有一個(gè)空格

// no space before "(", but one space before"{"
var doSomething = function(item) {
    // do something
};

function doSomething(item) {
    // do something
}

// not good
doSomething (item);

// good
doSomething(item);

// requires parentheses around immediately invoked function expressions
(function() {
    return 1;
})();

// not good
[1, 2].forEach(function x() {
    ...
});

// good
[1, 2].forEach(function() {
    ...
});

// not good
var a = [1, 2, function a() {
    ...
}];

// good
var a = [1, 2, function() {
    ...
}];

// use ", " between function parameters
var doSomething = function(a, b, c) {
    // do something
};

數(shù)組、對(duì)象

對(duì)象屬性名不需要加引號(hào);
對(duì)象以縮進(jìn)的形式書寫,不要寫在一行;
數(shù)組、對(duì)象最后不要有逗號(hào)。

// not good
var a = {
    "b": 1
};

var a = {b: 1};

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

// good
var a = {
    b: 1,
    c: 2
};
變量命名規(guī)范

標(biāo)準(zhǔn)變量采用駝峰式命名
ID在變量名中全大寫
URL在變量名中全大寫
Android在變量名中大寫第一個(gè)字母
iOS在變量名中小寫第一個(gè),大寫后兩個(gè)字母
常量全大寫,用下劃線連接
構(gòu)造函數(shù),大寫第一個(gè)字母
jquery對(duì)象必須以$開頭命名

var thisIsMyName;

var goodID;

var reportURL;

var AndroidVersion;

var iOSVersion;

var MAX_COUNT = 10;

function Person(name) {
    this.name = name;
}

// not good
var body = $("body");

// good
var $body = $("body");

前綴規(guī)范

s:表示字符串。例如:sName,sHtml;
n:表示數(shù)字。例如:nPage,nTotal;
b:表示邏輯。例如:bChecked,bHasLogin;
a:表示數(shù)組。例如:aList,aGroup;
r:表示正則表達(dá)式。例如:rDomain,rEmail;
f:表示函數(shù)。例如:fGetHtml,fInit;
o:表示以上未涉及到的其他對(duì)象,例如:oButton,oDate;

例外情況:

1:作用域不大臨時(shí)變量可以簡(jiǎn)寫,比如:str,num,bol,obj,fun,arr。
2:循環(huán)變量可以簡(jiǎn)寫,比如:i,j,k等。
函數(shù)命名規(guī)范

統(tǒng)一使用動(dòng)詞或者動(dòng)詞[+名詞]形式,例如:fGetVersion(),fSubmitForm(),fInit();涉及返回邏輯值的函數(shù)可以使用is,has等表示邏輯的詞語(yǔ)代替動(dòng)詞。

如果有內(nèi)部函數(shù),使用__f+動(dòng)詞[+名詞]形式,內(nèi)部函數(shù)必需在函數(shù)最后定義。

對(duì)象方法實(shí)現(xiàn)
對(duì)象方法命名使用 f+對(duì)象類名+動(dòng)詞[+名詞]形式;例如 fAddressGetEmail

事件響應(yīng)函數(shù)
某事件響應(yīng)函數(shù)命名方式為觸發(fā)事件對(duì)象名+事件名或者模塊名+觸發(fā)事件對(duì)象名+事件名,例如:fDivClick(),fAddressSubmitButtonClick()

其它注意事項(xiàng)

所有命名最好使用英語(yǔ)表示。

所有變量名應(yīng)該明確而必要,盡量避免不必要的容易混淆的縮寫。

netease.events.mouse.Handler,而不是 netease.events.mouse.MouseEventHandler。

對(duì)應(yīng)的方法應(yīng)該使用對(duì)應(yīng)的動(dòng)詞,例如:get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。

應(yīng)該避免雙重否定意義的變量,例如:bIsNotError, bIsNotFound,不可取。

變量應(yīng)該在最小的范圍內(nèi)定義,并盡可能的保持最少的活動(dòng)時(shí)間。

循環(huán)變量最好在循環(huán)中定義。例如for(var i=0,m=10;i++)

盡量避免復(fù)雜的條件語(yǔ)句,可以使用臨時(shí)的boolean變量代替。

一定要避免在條件中執(zhí)行語(yǔ)句,例如:if((i=3)>2){},不可取。

不要在代碼中重復(fù)使用相同意義的數(shù)字,用一個(gè)變量代替

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90822.html

相關(guān)文章

  • 【Node】前后端模塊規(guī)范與模塊加載原理

    摘要:例如指定一些依賴到模塊中實(shí)現(xiàn)規(guī)范的模塊化,感興趣的可以查看的文檔。 CommonJS 定義了 module、exports 和 require 模塊規(guī)范,Node.js 為了實(shí)現(xiàn)這個(gè)簡(jiǎn)單的標(biāo)準(zhǔn),從底層 C/C++ 內(nèi)建模塊到 JavaScript 核心模塊,從路徑分析、文件定位到編譯執(zhí)行,經(jīng)歷了一系列復(fù)雜的過程。簡(jiǎn)單的了解 Node 模塊的原理,有利于我們重新認(rèn)識(shí)基于 Node 搭建的...

    jsyzchen 評(píng)論0 收藏0
  • js深入()萬(wàn)臉懵圈的this指向

    摘要:作為一個(gè)菜雞的我而言,在之前講到過那么多的鏈?zhǔn)讲檎覚C(jī)制,比如說原型鏈,作用域鏈等等,想當(dāng)然的把這個(gè)機(jī)制帶入到了指向上邊,結(jié)果就是這個(gè)指向指的我萬(wàn)臉懵逼標(biāo)題換字了,擔(dān)心被河蟹在經(jīng)過漫長(zhǎng)的通俗易懂的規(guī)范閱讀之后,分享一下我所認(rèn)知的指向簡(jiǎn)而言之, 作為一個(gè)js菜雞的我而言,在之前講到過那么多的js鏈?zhǔn)讲檎覚C(jī)制,比如說原型鏈,作用域鏈等等,想當(dāng)然的把這個(gè)機(jī)制帶入到了this指向上邊,結(jié)果就是這...

    pcChao 評(píng)論0 收藏0
  • 關(guān)于JavaScript模塊規(guī)范之CommonJSAMDCMD

    摘要:所有依賴這個(gè)模塊的語(yǔ)句,都定義在一個(gè)回調(diào)函數(shù)中,等到加載完成之后,這個(gè)回調(diào)函數(shù)才會(huì)運(yùn)行。也采用語(yǔ)句加載模塊,但是不同于,它要求兩個(gè)參數(shù)第一個(gè)參數(shù),是一個(gè)數(shù)組,里面的成員就是要加載的模塊第二個(gè)參數(shù),則是加載成功之后的回調(diào)函數(shù)。 本篇文章來自對(duì)文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結(jié),大部分摘自文章原話,本人只是為了學(xué)習(xí)方便做的筆記,之后有新的體會(huì)會(huì)及時(shí)補(bǔ)充...

    binaryTree 評(píng)論0 收藏0
  • JavaScript模塊化

    摘要:是中提供的模塊化編程的方案,是中新增。所以人們產(chǎn)生了這樣的需求,希望有支持兩種風(fēng)格的通用模式,于是通用模塊規(guī)范誕生了。模塊化對(duì)模塊進(jìn)行導(dǎo)出導(dǎo)入的 AMD、CMD、CommonJs、UMD是ES5中提供的模塊化編程的方案,import/export是ES6中新增。1.AMD-異步模塊定義AMD是RequireJS在推廣過程中對(duì)模塊定義的規(guī)范化產(chǎn)出,它是一個(gè)概念,RequireJS是對(duì)這個(gè)...

    wizChen 評(píng)論0 收藏0
  • 前端編碼規(guī)范

    摘要:前言首先,寫這篇代碼規(guī)范是為了我自己在以后的項(xiàng)目中方便引用,讓前端人員統(tǒng)一標(biāo)準(zhǔn),方便在開發(fā)中保持代碼的一致性,代碼規(guī)范是在的編碼規(guī)范上的基礎(chǔ)上做的修改,下面只列舉出一些不一樣的地方,基本的規(guī)范參照編碼規(guī)范要求使用。 前言 首先,寫這篇代碼規(guī)范是為了我自己在以后的項(xiàng)目中方便引用,讓前端人員統(tǒng)一標(biāo)準(zhǔn),方便在開發(fā)中保持代碼的一致性,代碼規(guī)范是在bootstrap的編碼規(guī)范上的基礎(chǔ)上做的修改,...

    nicercode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<