Closed shaoshuai0102 closed 12 years ago
_使用define定义模块,但部分API的暴露还是通过向arale这个对象上挂载来实现的_ 这个完全是为了兼容性考虑的, 后续肯定不会这样做的. 因为现在不能消除其他代码对全局变量的引用, 所以原有如果污染全局变量的方法和接口并没有给限制死, 但是我们内部的引用一定严格的按照require的方式来. 不能直接引用全局变量了.
我推荐采用方案二,可以看 1.2 中 dom 和 event 的组织 CommonJS 支持子模块开发方式,好处很明显:
大家先看看 1.2 的代码?
还有就是目前有些代码不光是直接引用arale.core, 有些是从arale.base开始引入的, 所以如果我们把某些对全局变量进行污染的模块给封装起来的话, 就不能保证这些项目的安全使用了. 所以我目前的想法是如果是对现有模块改造的话, 那么我们两种都可以支持, 但是我们可以通过其他手段(代码扫描)等方式协助用户在产品开发中去掉对全局变量的引用, 改为require的方式进行引用. 等到产品全部升级完毕后, 我们在把全局变量给去掉.
基本已达成一致,采用 CommonJS 的方式,彻底模块化。
Arale 1.x 的问题,等以后需要做兼容层时再考虑。
像arale.array,arale.dom等模块应该如何组织?
针对现在已经改动的模块,存在以下问题:
我的观点,要么直接不使用define,把代码整好,最后整个arale通过一个define来完成模块的封装,要么使用define,每个模块都严格遵循规范,为了达到与现在兼容,在arale.core进行组装,API封装等。
倾向于第二种。