摘要:概述為提高團隊協(xié)作效率,規(guī)范文件管理,方便項目后期維護,提高代碼質(zhì)量,特制訂此文檔,前端開發(fā)人員必須遵照本規(guī)范進行前臺頁面開發(fā)。
概述
為提高團隊協(xié)作效率,規(guī)范文件管理,方便項目后期維護,提高代碼質(zhì)量,特制訂此文檔,前端開發(fā)人員必須遵照本規(guī)范進行前臺頁面開發(fā)。
基本規(guī)范sublime Text3請安裝jshint插件以檢查JS編寫錯誤;
安裝教程:使用lint進行語法及風(fēng)格校驗
異步加載文件命名
require.ensure([],function(){ //異步加載內(nèi)容 },"ensure/業(yè)務(wù)模塊名_頁面名_異步方法名_1")
引號
最外層統(tǒng)一使用單引號。
// not good var x = "test"; // good var y = "foo", z = "";
空行
以下幾種情況需要空行:
變量聲明后(當(dāng)變量聲明在代碼塊的最后一行時,則無需空行)
注釋前(當(dāng)注釋在代碼塊的第一行時,則無需空行)
代碼塊后(在函數(shù)調(diào)用、數(shù)組、對象中則無需空行)
文件最后保留一個空行
// 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 };
變量聲明
一個函數(shù)作用域中所有的變量聲明盡量提到函數(shù)首部,用一個var聲明,不允許出現(xiàn)兩個連續(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ù)
無論是函數(shù)聲明還是函數(shù)表達式,"("前不要空格,但"{"前一定要有空格;
函數(shù)調(diào)用括號前不需要空格;
立即執(zhí)行函數(shù)外必須包一層括號;
不要給inline function命名;
參數(shù)之間用", "分隔,注意逗號后有一個空格
// 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ù)組、對象
對象屬性名不需要加引號;
對象以縮進的形式書寫,不要寫在一行;
數(shù)組、對象最后不要有逗號。
// 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)準變量采用駝峰式命名
ID在變量名中全大寫
URL在變量名中全大寫
Android在變量名中大寫第一個字母
iOS在變量名中小寫第一個,大寫后兩個字母
常量全大寫,用下劃線連接
構(gòu)造函數(shù),大寫第一個字母
jquery對象必須以$開頭命名
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:表示正則表達式。例如:rDomain,rEmail; f:表示函數(shù)。例如:fGetHtml,fInit; o:表示以上未涉及到的其他對象,例如:oButton,oDate;
例外情況:
1:作用域不大臨時變量可以簡寫,比如:str,num,bol,obj,fun,arr。 2:循環(huán)變量可以簡寫,比如:i,j,k等。函數(shù)命名規(guī)范
統(tǒng)一使用動詞或者動詞[+名詞]形式,例如:fGetVersion(),fSubmitForm(),fInit();涉及返回邏輯值的函數(shù)可以使用is,has等表示邏輯的詞語代替動詞。
如果有內(nèi)部函數(shù),使用__f+動詞[+名詞]形式,內(nèi)部函數(shù)必需在函數(shù)最后定義。
對象方法實現(xiàn)
對象方法命名使用 f+對象類名+動詞[+名詞]形式;例如 fAddressGetEmail
事件響應(yīng)函數(shù)
某事件響應(yīng)函數(shù)命名方式為觸發(fā)事件對象名+事件名或者模塊名+觸發(fā)事件對象名+事件名,例如:fDivClick(),fAddressSubmitButtonClick()
所有命名最好使用英語表示。
所有變量名應(yīng)該明確而必要,盡量避免不必要的容易混淆的縮寫。
netease.events.mouse.Handler,而不是 netease.events.mouse.MouseEventHandler。
對應(yīng)的方法應(yīng)該使用對應(yīng)的動詞,例如:get/set, add/remove, create/destroy, start/stop, insert/delete, begin/end。
應(yīng)該避免雙重否定意義的變量,例如:bIsNotError, bIsNotFound,不可取。
變量應(yīng)該在最小的范圍內(nèi)定義,并盡可能的保持最少的活動時間。
循環(huán)變量最好在循環(huán)中定義。例如for(var i=0,m=10;i++)
盡量避免復(fù)雜的條件語句,可以使用臨時的boolean變量代替。
一定要避免在條件中執(zhí)行語句,例如:if((i=3)>2){},不可取。
不要在代碼中重復(fù)使用相同意義的數(shù)字,用一個變量代替
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/90822.html
摘要:例如指定一些依賴到模塊中實現(xiàn)規(guī)范的模塊化,感興趣的可以查看的文檔。 CommonJS 定義了 module、exports 和 require 模塊規(guī)范,Node.js 為了實現(xiàn)這個簡單的標(biāo)準,從底層 C/C++ 內(nèi)建模塊到 JavaScript 核心模塊,從路徑分析、文件定位到編譯執(zhí)行,經(jīng)歷了一系列復(fù)雜的過程。簡單的了解 Node 模塊的原理,有利于我們重新認識基于 Node 搭建的...
摘要:作為一個菜雞的我而言,在之前講到過那么多的鏈式查找機制,比如說原型鏈,作用域鏈等等,想當(dāng)然的把這個機制帶入到了指向上邊,結(jié)果就是這個指向指的我萬臉懵逼標(biāo)題換字了,擔(dān)心被河蟹在經(jīng)過漫長的通俗易懂的規(guī)范閱讀之后,分享一下我所認知的指向簡而言之, 作為一個js菜雞的我而言,在之前講到過那么多的js鏈式查找機制,比如說原型鏈,作用域鏈等等,想當(dāng)然的把這個機制帶入到了this指向上邊,結(jié)果就是這...
摘要:所有依賴這個模塊的語句,都定義在一個回調(diào)函數(shù)中,等到加載完成之后,這個回調(diào)函數(shù)才會運行。也采用語句加載模塊,但是不同于,它要求兩個參數(shù)第一個參數(shù),是一個數(shù)組,里面的成員就是要加載的模塊第二個參數(shù),則是加載成功之后的回調(diào)函數(shù)。 本篇文章來自對文章《js模塊化編程之徹底弄懂CommonJS和AMD/CMD!》的總結(jié),大部分摘自文章原話,本人只是為了學(xué)習(xí)方便做的筆記,之后有新的體會會及時補充...
摘要:是中提供的模塊化編程的方案,是中新增。所以人們產(chǎn)生了這樣的需求,希望有支持兩種風(fēng)格的通用模式,于是通用模塊規(guī)范誕生了。模塊化對模塊進行導(dǎo)出導(dǎo)入的 AMD、CMD、CommonJs、UMD是ES5中提供的模塊化編程的方案,import/export是ES6中新增。1.AMD-異步模塊定義AMD是RequireJS在推廣過程中對模塊定義的規(guī)范化產(chǎn)出,它是一個概念,RequireJS是對這個...
摘要:前言首先,寫這篇代碼規(guī)范是為了我自己在以后的項目中方便引用,讓前端人員統(tǒng)一標(biāo)準,方便在開發(fā)中保持代碼的一致性,代碼規(guī)范是在的編碼規(guī)范上的基礎(chǔ)上做的修改,下面只列舉出一些不一樣的地方,基本的規(guī)范參照編碼規(guī)范要求使用。 前言 首先,寫這篇代碼規(guī)范是為了我自己在以后的項目中方便引用,讓前端人員統(tǒng)一標(biāo)準,方便在開發(fā)中保持代碼的一致性,代碼規(guī)范是在bootstrap的編碼規(guī)范上的基礎(chǔ)上做的修改,...
閱讀 2185·2021-09-02 15:11
閱讀 1507·2019-08-30 15:43
閱讀 2073·2019-08-29 13:48
閱讀 2790·2019-08-26 13:55
閱讀 2100·2019-08-23 15:09
閱讀 2896·2019-08-23 14:40
閱讀 3421·2019-08-23 14:23
閱讀 2632·2019-08-23 14:20