探索cocosH5正确的开发姿势---误区与js生态工具

回首自己3年多的cocos2d游戏开发经历,从cocos2d到coco2d-x入门,之后机缘巧合辗转到了cocos2d-js阵营。在深入使用cocos2d-js以及后来使用cocoscreator做游戏项目的同时,我开始逐步走进Javascript神奇的世界。现在回过头来忽然察觉到,不是自己选择了cocos H5(我将cocos2d-js/cocoscreator的统称),而是选择了javascript;不只是简单地选择了这门脚本语言,而选择的是javascript平台和生态圈,这才是自己为什么一直对cocos H5不离不弃的原因。

在过去的两年时间先后培养了5名cocos2d-js客户端程序员,现在联系他们大多还在做cocos H5方向的工作。但发现不管是自己、曾经的同事、朋友们等的公司,但凡用cocos H5技术都发现都普遍存在一些误区,我在此根据自己的项目经验总结一下。

一、cocos H5普遍存在的误区

1. 左倾思想

简单地把cocos H5当成cocos c++/lua的代替品

1. 有部分公司或开发人员是从c++或移动应用开发转过来的,用的是c++的开发思路编写js代码。

现象:手写UI、开发、调试手段极其落后,通常的唯一方法就是打日志。

2. 不会利用javascript的三方模块,甚至不知道去使用它,其原因是不了解javascript的模块化技术。

现象:自身代码没有模块化,也无法实现代码模块和库的积累。

3. 把cocos h5当成c++、lua在使用,编写的代码不能在浏览器上运行。

现象:因为他们大多是在模拟器上开发,对web开发技术了解的不多,不能同时兼顾原生和浏览器。

口头禅:先把手机端做好再做浏览器。

2. 右倾思想

单纯地把cocos H5当成“传统”的web开发

1. 这类公司或开发人员,大多是从做web开发转过来的,而且还只是“传统”的web开发,直白一点就是做网页。

现象:在index.html中加载大量js代码和三方库。

2. 由于没有模块化原因,代码中充斥着大量的全局变量,对面向对象和设计模式运用的很少。

现象:资源管理混乱,代码效率低下,无法驾驭复杂的业务场景。cocos H5在资源管理上与cocos c++/lua最大的区别是“异步加载”,这也是疑惑的问题之一。

3. 编写的代码不能在原生上运行。

现象:因为是在浏览器上开发、调试,以及第1条中提到的模块的加载方式导致,只能工作在浏览器上。

口头禅:先把浏览器好再做手机。

二、我对cocos H5的理解

1. 曾经的认识

我最早跟大家一样,认为cocos2d-js只是在cocos2d-x家族中选择一门脚本语言,我为什么会选择JS而不是Lua呢?是因为早些年使用Lua做过端游服务器和客户端UI,当时对Lua的理解和运用都很肤浅,对项目驾驭能力太差,从而对Lua产生了不好的使用体验。

2. 现在的理解

在经过一段时间使用cocos2d-js,对javascript语言的深入,逐步了解到围绕Nodejs、Web前端的javascript前后端生态圈。慢慢地我意识到,我以为只是选择一门脚本语言,其实选择的是javascrip平台和生态圈!而cocos H5只是Javascript中的一员。

深入使用Cocos H5技术,同时充分利用Javascript平台世界的生态工具,才能正发挥cocos的威力。

三、从我的CocosCreator项目看Javascript世界

1. nodejs

nodejs的出现是javascript模块化诞生的标志,从此可以使用javascript构建服务端应用。

如果不了解nodejs也无法知道如何将javascript代码模块化,有了模块化你可像编写c++、Java那样引入模块。团队开发中才可以将功能有效拆解,做出自己可复用的模块,建立自己的代码库。我认识为模块化是编写Cocos H5开发的第一步,我在项目编码中一律采用nodejs代码风格,利用Browserify或Webpack可以将代码完美地运行在浏览器和原生上。

2. npm

npm全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。

npm上面承载了数以万计的Node模块,纯javascript编写的模块可以在前后端通用,理所当然cocos H5中也能使用。其中还有各种奇思妙想的Node工具让人拍案叫绝,同时还能提高你的工作效率。如果你在使用cocos H5技术,却对npm了无所知的话,现在你读这篇文章你应该觉得很幸运,因为它是一个宝库。

在cocos H5游戏代码工程中我常用的npm模块有:

lodash

undersocre(已经被lodash替代了)

protobufjs

async

moment

socket.io

3. Grunt & Gulp

Grunt是Javascript世界的构建工具,对于需要反复重复的任务实现自动化,自动化工具可以减轻你的劳动,简化你的工作。

我在项目中利用Grunt解决了客户端程序反复打开关闭目录、Ctrl+C 、Ctrl+V鼠标点来点去讨人厌且又无技术含量的工作。这些无聊的工作,每天消耗着我们的大脑能量主要是:从SVN获取美术、策划输出的资源、把它们复制到客户端工程不同的目录、有的还需要压缩、将策划Excel还需要转换成JSON或MySQL表。

我在cocos H5项目开发中用到的Grunt插件主要是:

grunt-shell

grunt-sync

编写命令工具的npm模块有:

shelljs

node-xlsx

yargs

plist

rd

mysql

Gulp.js是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务,利用Node.js流的威力,你可以快速构建项目并减少频繁的 IO 操作。

CocosCreator中集成的自动化构建工具就是 Gulp,你也可以在安装目录中找到相关脚本文件。当你修改过Creator引擎源码时,记得一定要使用使用 gulp 命令重新编译引擎才能生效,方法步骤如下:

命令终端切换到目录: Creator安装目录/engine

执行命令:npm install (提前安装好nodejs\npm)

执行命令:gulp ,等待编译完成即可。

4. ES6

ECMAScript6(以下简称ES6)是JavaScript语言的下一代标准。

在CocosCreator项目中,我已经迫不急待地尝试了ES6的新语法去编写代码,它让我体会到写代码也会这么有乐趣,中其常用的新语法有:字符串模块、箭头函数、对象解构、默认参数、类定义

在CocosCreator中你可以使用所有以上的新语法,因为Creator中已经集了Bable编译器。但Cocos2d-js中要使用需要自己配置环境,这也不是难事。

5. Bable

Bable一个 JavaScript编译器,你可以使用下一代javascript语法写代码,不用等待浏览器提供支持。

在 Creator 中已经集成了Babel,可以减少代码量、提高可读性。建议在新项目中使用 ES6新的语法规范,同时也能保持与 Javascript 语言的与时俱进。

5. Browserify & Webpack

Browserify可以让你使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码,通过预编译让前端 Javascript 可以直接使用 Node NPM 安装的一些库。

Browserify才是正真的将前端javascript模块化的主角,我最早在 cocos2d-js 项目就使用它来组织代码。它帮助我解决了在 cocos2d-js 中代码加载顺序问题,同时可以编写node一样风格的代码,使用npm来管理三方库,天地人从此连接再了一起,Creator 中已经集成了 Browserify,在安装目录中可以看到。

与 Browserify 同类工具还有 Webpack,我在 cocos2d-js 项目中还尝试过Webpack,比Browserifyg还要强大。有的前端工程直接使用Webpack代替了Browserify和Grunt。最早我满以为Creator应该是由 Webpack+Grunt+Babel,实际是由 Browserify+Glup+Babel。Webpack是javascript世界不可忽视的构建工具。

7. ESLint

ESLint是一个可配置的JavaScript代码校验工具,不仅可以校验最新的语法,还可以配置规则约束你的代码风格,严格到一个空格或标点。

如果是正式项目强烈建议在日常编码时使用上ESlint,以Airbnb JavaScript Style Guide语法规范为根基,再根据自己的实际情况配置调整。

有了 ESlint的保驾护航,我相信我们的javascript 代码会更加的优雅、健壮,我们的项目质量会更高。

心愿

2016年是自己最为动荡的一年,由于身体不适离职、原公司解散、新工作不顺。重振旗鼓面对新一年的到来时,洞察到一个奇怪的现像,在成都游戏行业中cocos2d-js、cocoscreator市场,很多公司招不到人,与HR聊天的过程中听说到“成都要找个做cocos2d-js\cocoscreator的一周都找不到一个冒泡的,c++和lua的到是多”,这是真话因为我在原来的公司也为招聘cocos2d-js的人才发愁。

经过一段时间的思索,我想将自己的cocos H5开发经验和技术制作成简短视频,分享自己的经验,帮助大家入门应该还是满有信心的,不仅可以帮助别人更是帮助自己,为自己所在的行业尽自己的一点绵薄之力。

写这篇文章之前本是制作了一段简短的视频,也是自己第一次尝试,发现有很多的不足。我又将视频中所讲的内容整理用文字再记录一遍,补充了一些内容,帮助不便看视频的同学们。

点击收看视频:



探索CocosH5正确开发姿势
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容