我們的javaScript規(guī)范,從整體上來說,是基于Airbnb的js規(guī)范,加上一些適用于cocos2dx-js和項(xiàng)目本身的自定義規(guī)則。
為什么選用Airbnb的js規(guī)范:
認(rèn)可度高,該規(guī)范現(xiàn)在已經(jīng)或者即將成為js國(guó)際標(biāo)準(zhǔn)了。看看Airbnb的Github,有恐怖的47000+的star官方提供Eslint插件支持。結(jié)合WebStorm,簡(jiǎn)直完美支持ES6、React等。雖然由于cocos2dx-js的問題,穩(wěn)妥起見,我們目前使用其中的ES5標(biāo)準(zhǔn)關(guān)于如何使用WebStorm+Eslint+Airbnb的js規(guī)范,參考另一篇博文:Mac下WebStorm配置Eslint教程自定義規(guī)則:首先看一下項(xiàng)目的.eslintrc文件,在airbnb的基礎(chǔ)上有幾條簡(jiǎn)單的調(diào)整,注釋都很明確,就不再過多解釋{ "extends": "airbnb/legacy", "plugins": [ "import" ], "rules": { //縮進(jìn)設(shè)置為4個(gè)空格 "indent": ["error", 4], //強(qiáng)制要求末尾逗號(hào) "comma-dangle": ["error", "always"], //字符串使用雙引號(hào),項(xiàng)目中幾乎不會(huì)有html代碼,所以這里延用C++、C#等的習(xí)慣,使用雙引號(hào) "quotes": [1, "double"], //只有this的標(biāo)識(shí)符允許下劃線,為了兼容cocos2dx-js的this._super "no-underscore-dangle": ["error", { "allowAfterThis": true }] }, "globals": { //下面三個(gè)是為了兼容cocos2dx-js本身 "cc": true, "res": true, "gResources": true, //我們自定義的類都放在lu命名空間下,自定義的所有常量都在co命名空間下 "lu": true, "co": true }}最后追加一些關(guān)于cocos2dx-js的命名規(guī)則:js文件命名遵循普遍的習(xí)慣,全部小寫,多個(gè)詞中間以-連接,比如main.js,scene-main.js項(xiàng)目中自定義的類,使用駝峰式命名,并且首字母大寫,繼承的類,第一個(gè)詞要是父類的名字。這樣的目的,一方面是與cocos2dx-js本身統(tǒng)一,另一方面延續(xù)C++/C#的習(xí)慣,比如:lu.LayerMain = cc.Layer.extend({ ...});lu.SceneMain = cc.Scene.extend({ ...});為避免全局變量混亂,使用命名空間,比如上面的代碼中,自定義的類都放入lu命令空間下,比如所有常量放入co命令空間下,并且根據(jù)模塊分開聲明:// 所有常量的命名空間var co = {};// 游戲的整體配置常量co.MainConfig = { UpdateMode: true,};// 關(guān)于輪子的常量co.Wheel = { WheelNodeItemCount: 11, WheelNodeItemSpace: 220, WheelNodeItemSize: 244, WheelNodeItemImg: ["bar1", "bar2", "bar3", "red7", "wild", "x2", "x3", "x5",],};類內(nèi)部的全局變量命名以m開頭,駝峰式,且命名的第一個(gè)詞能看出來變量類型:lu.Wheel = cc.Node.extend({ mNode1: null, mNode2: null, mIsRolling: false, mHeight: 0,});類的方法名,首字母小寫:lu.LayerMain = cc.Layer.extend({ init: function () { }, startLoad: function () { },});
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注