快速入口
不读文章可以直接拐向这里:
github:https://github.com/AlloyTeam/AlloyGameEngine
开门大吉
每次输入 kmdj 输入法自动提示【开门大吉】,输入 kmdjs 提示【开幕倒计时】,所以说 kmdjs 不仅仅是满满的血腥味
(kill all module define lib/framework, kill amd and cmd),还有着美好的寓意。
一定要提 kmdjs 是因为 AlloyRenderingEngine 是基于 kmdjs 进行模块化开发(其实使用 kmdjs 已经没有模块的概念了),只要 class 和 namespace。
kmdjs 的核心的核心就是 {},class 全部挂在 {} 上。{} 属于 namespace。所以很自然而然得轻松实现循环依赖。当然 kmdjs 还有很多优点,如:
- 支持依赖可视
- 支持循环依赖
- 支持命名重复
- 支持压缩打包
- 支持代码美化
- 支持远程加载
- 支持延迟加载
- 支持模块共享
- 支持平铺依赖
- 支持断点调试
- 支持独立打包
- 支持一键下载
github:https://github.com/kmdjs/kmdjs
再造轮子
看过一些 flash 团队的 html5 开源项目,也读了读很多 opengl 转 webgl 的工程师的游戏引擎教程,他们视野够广,图形方面经验也很丰富,
但是项目的组织架构千奇百怪,一个人一个花样,一个团队一个花样。所以,kmdjs 要出手了(当然也可以认为又多了一个新花样,
当至少是我觉得很满意、很清晰简洁的花样),去组织每一行没有归宿感的 js 代码。
目录结构
先看顶级目录结构
再看 build 里的目录结构
其中 main.js:
ctor 是 Main 的构造函数,也是唯一一个会自动去 new 的构造函数,其余文件里面 difine 的 class 都需要自行去 new 才能执行。
ctor 里面的一大堆 instanceof 代码主要是为了产生依赖,所以需要合并提取的 class 都需要写进去。
最后直接打开 index 就能导出代码。
且看导出后的 are.js 的最后几行:
这样的话,你就可以随意码了,比如:
为了避免打点,js 工程师一般这么干:
终于知道 js 的世界有多混乱了吧?!
写一段程序需要频繁打点是不对的,一是慢,二是麻烦。js 工程师为了避免打点几乎绞尽脑汁。
上面是避免打点的一些手段,如果使用 kmdjs,妈妈再也不用担心打点了:
Next
这篇主要讲了下目录结构以及 kmdjs 在 are 中的作用,还有 are 的 build 工具的使用以及模块化的看法,确切说还没有进入主题,甚至跑题,
但是非常重要,待续。
123 2015 年 3 月 6 日
12345
SinChan 2015 年 3 月 5 日
怎么感觉和 require.js 那么的相似?
dntzhang 2015 年 3 月 8 日
完全不一样啊!requirejs/seajs/xxjs 都 one module one file, kmdjs 是 one class one file,粒度更细,更强大。
Oscar 2015 年 3 月 11 日
跟 requirejs 本質上是一樣的,每個文件放 module 還是 class 完全是你寫代碼時怎麼組織項目結構的問題
dntzhang 2015 年 3 月 12 日
本质不一样,kmdjs 更加细粒度,而且可以抽取出若干个 class 或者 namespace 转成 amd/cmjs/window 的模块使用
而且 kmdjs 只需要浏览环境就可以干许多工程化的事情,还有就是 kmdjs 可以通过 define 实现继承,
还有就是 kmdjs 完美支持循环依赖,还有就是 kmdjs 可以在 js 运行前暴露 js 的若干问题,而不是运行后,
甚至可以用于检查代码质量,还有就是………
J.Chen 2015 年 3 月 3 日
说真的,我看了你们 Github 上面那么多废弃的项目,真的不敢 Fork,也不敢用。
路人甲 2015 年 3 月 5 日
alloy 系列一直会更新
06wj 2015 年 3 月 2 日
打点是神马。。
dntzhang 2015 年 3 月 2 日
打点就是访问 {} 下的 class 啊,需要打点才能出来啊。
dntzhang 2015 年 3 月 2 日
比如要使用 Txt, 需要 ARE.Txt