我们的cocos2dx-js规范
2017-02-09 16:05
513 查看
我们的JavaScript规范,从整体上来说,是基于Airbnb的js规范,加上一些适用于cocos2dx-js和项目本身的自定义规则。
为什么选用Airbnb的js规范:
认可度高,该规范现在已经或者即将成为js国际标准了。看看Airbnb的Github,有恐怖的47000+的star
官方提供Eslint插件支持。结合WebStorm,简直完美
支持ES6、React等。虽然由于cocos2dx-js的问题,稳妥起见,我们目前使用其中的ES5标准
关于如何使用WebStorm+Eslint+Airbnb的js规范,参考另一篇博文:Mac下WebStorm配置Eslint教程
自定义规则:
首先看一下项目的.eslintrc文件,在airbnb的基础上有几条简单的调整,注释都很明确,就不再过多解释
最后追加一些关于cocos2dx-js的命名规则:
js文件命名遵循普遍的习惯,全部小写,多个词中间以-连接,比如main.js,scene-main.js
项目中自定义的类,使用驼峰式命名,并且首字母大写,继承的类,第一个词要是父类的名字。这样的目的,一方面是与cocos2dx-js本身统一,另一方面延续C++/C#的习惯,比如:
为避免全局变量混乱,使用命名空间,比如上面的代码中,自定义的类都放入lu命令空间下,比如所有常量放入co命令空间下,并且根据模块分开声明:
类内部的全局变量命名以m开头,驼峰式,且命名的第一个词能看出来变量类型:
类的方法名,首字母小写:
为什么选用Airbnb的js规范:
认可度高,该规范现在已经或者即将成为js国际标准了。看看Airbnb的Github,有恐怖的47000+的star
官方提供Eslint插件支持。结合WebStorm,简直完美
支持ES6、React等。虽然由于cocos2dx-js的问题,稳妥起见,我们目前使用其中的ES5标准
关于如何使用WebStorm+Eslint+Airbnb的js规范,参考另一篇博文:Mac下WebStorm配置Eslint教程
自定义规则:
首先看一下项目的.eslintrc文件,在airbnb的基础上有几条简单的调整,注释都很明确,就不再过多解释
{ "extends": "airbnb/legacy", "plugins": [ "import" ], "rules": { //缩进设置为4个空格 "indent": ["error", 4], //强制要求末尾逗号 "comma-dangle": ["error", "always"], //字符串使用双引号,项目中几乎不会有html代码,所以这里延用C++、C#等的习惯,使用双引号 "quotes": [1, "double"], //只有this的标识符允许下划线,为了兼容cocos2dx-js的this._super "no-underscore-dangle": ["error", { "allowAfterThis": true }] }, "globals": { //下面三个是为了兼容cocos2dx-js本身 "cc": true, "res": true, "gResources": true, //我们自定义的类都放在lu命名空间下,自定义的所有常量都在co命名空间下 "lu": true, "co": true } }
最后追加一些关于cocos2dx-js的命名规则:
js文件命名遵循普遍的习惯,全部小写,多个词中间以-连接,比如main.js,scene-main.js
项目中自定义的类,使用驼峰式命名,并且首字母大写,继承的类,第一个词要是父类的名字。这样的目的,一方面是与cocos2dx-js本身统一,另一方面延续C++/C#的习惯,比如:
lu.LayerMain = cc.Layer.extend({ ... }); lu.SceneMain = cc.Scene.extend({ ... });
为避免全局变量混乱,使用命名空间,比如上面的代码中,自定义的类都放入lu命令空间下,比如所有常量放入co命令空间下,并且根据模块分开声明:
// 所有常量的命名空间 var co = {}; // 游戏的整体配置常量 co.MainConfig = { UpdateMode: true, }; // 关于轮子的常量 co.Wheel = { WheelNodeItemCount: 11, WheelNodeItemSpace: 220, WheelNodeItemSize: 244, WheelNodeItemImg: ["bar1", "bar2", "bar3", "red7", "wild", "x2", "x3", "x5",], };
类内部的全局变量命名以m开头,驼峰式,且命名的第一个词能看出来变量类型:
lu.Wheel = cc.Node.extend({ mNode1: null, mNode2: null, mIsRolling: false, mHeight: 0, });
类的方法名,首字母小写:
lu.LayerMain = cc.Layer.extend({ init: function () { }, startLoad: function () { }, });
相关文章推荐
- cocos creator学习笔记2017.2.9
- cocos2dx 一些初始化函数
- cocos2dx 简单加载lua文件
- Cocos2d-x 3.x程序结构
- Cocos_Lua如何调整模拟器大小以及分辨率
- Cocos2dx IOS广告 & Android广告 & 社会化分享 链接
- Windows 7(64bits)+虚拟机运行Cocos2d-x 3.8.1 cpp-tests项目
- [Cocos2dx]面试题汇总一
- 关于cocos2dx内存管理机制的记录
- cocos2d-x自制RPG游戏总结
- cocos-2dx开发项目中的热更新cpp
- cocos-2dx开发项目中的热更新
- 用Android studio创建Cocos2d-x 3.X项目
- cocos2dX中c++和lua的交互-1
- 用Cocos Studio 2.3.2制作UI界面中控件不再支持运行3d动作特效
- 让Cocos Studio 2.3.2制作UI界面中控件支持运行3d动作特效的间接途径
- cocos2d-x 3.8.1的骨骼动画加载方法addArmatureFileInfo仍然存在问题
- 拇指接龙游戏升级记录01(CocoStudio 1.4.0.1+Cocos2d-x 2.2.3=>Cocos Studio 2.3.2+Cocos2d-x 3.8.1)
- 拇指接龙游戏升级记录02(Cocos2d-x 3.8.1集成ShareSDK遇到的问题)
- Cocos2dx开发之一 开发环境搭建