模块化初窥

模块化

AMD

实现AMD的库有RequireJScurlDojo
AMD采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:
require([module], callback)
第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。
记载和执行是异步的,浏览器不会假死。

require.js

require.js的诞生,就是为了解决这两个问题:
(1)实现js文件的异步加载,避免网页失去响应;
(2)管理模块之间的依赖性,便于代码的编写和维护。

require.config({
        baseUrl: ".",
        paths: {
            'modul': './lib/moudle'
        }
    }
)//对模块加载进行定义。
define(id?,dependencies?,factory) //定义模块。
require(['moduleA', 'moduleB', 'moduleC'], function (moduleA, moduleB, moduleC){
    // some code here
});//加载模块

CMD 规范

CMD(Common Module Definition)是 SeaJS推广过程中产生的。
define(function(require,exports,module){...});

AMD vs CMD

SeaJS对模块的态度是懒执行, 而RequireJS对模块的态度是预执行

CommandJs

CommonJS是服务器端模块的规范,因为同步加载的原因,并不适合前端。Node.js采用了这个规范。
1.在一个模块中,存在一个自由的变量”require”,它是一个函数。
2.在一个模块中,会存在一个名为”exports”的自由变量,它是一个对象,模块可以在执行的时候把自身的API加入到其中。
3。模块必须使用”exports”对象来做为输出的唯一表示

你可能感兴趣的:(模块化初窥)