首页 > 代码库 > 模块化学习笔记1

模块化学习笔记1

    

模块: 可以理解为实现特定功能的一组方法。同时,它可以提供一个接口供其他程序调用。通过分而治之及复用思想,提高效率。

       是否可以理解为类似组件的形式呢? 

 

模块化的实现方法:

(1)将多个函数封装在一起

(2)将变量与函数封装在一个对象中

(3)立即执行函数 

 

JavaScript模块化规范:CommonJS、AMD、CMD

(1)CommonJS

       同步实现。一个单独的文件就是一个模块。模块通过module.exports对象输出,需要输出的内容都放入到该对象中。使用Require加载模块。

(2)AMD

      异步实现。通过define()方法定义模块,其中包含了模块标识符、当前依赖的模块列表、模块初始化需要执行的函数或对象。使用require函数加载模块。RequireJS

(3)CMD

     异步实现。通过define()方法定义模块,其中包含了require方法(用于获取其他模块提供的接口)、exports对象(用于向外提供模块接口)、module对象(存储了与当前模块相关联的属性与方法)。SeaJs

 

AMD与CMD比较:

同:

都是为了解决模块化在前端方面,浏览器端应用,且加载模块都是异步的。

异:

(1)在模块定义时,对依赖的处理不同

    AMD推荐依赖前置,在定义模块时就要声明所依赖的模块。AMD在模块加载完成后会立即执行该模块,所有模块执行完成后进入require回调函数,执行主逻辑。

   CMD推荐就近依赖,只有在用到某个模块时才会加载。CMD在某个依赖加载完成后并不立即执行,在所有依赖模块都加载完毕后进入主逻辑,遇到require语句才执行对应的模块。

 

参考资料:

http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

http://www.cnblogs.com/dolphinX/p/4381855.html

http://web.jobbole.com/83761/

http://www.open-open.com/lib/view/open1435482139200.html

http://fex.baidu.com/blog/2014/03/fis-module/

http://www.qdfuns.com/notes/16274/0cca2f91e1f6000284e59242647d25c1.html

 

纸上得来终觉浅。。。。。。

 

模块化学习笔记1