js 模块化

1.模块化优点

(1)可维护

(2)可扩展

(3)可复用

(4)功能分治

(5)按需使用模块

2.模块化面临问题

(1)如何安全的包装一个模块代码?

(2)如何唯一标识一个模块?

(3)如何优雅的把模块api暴露出去?

(4)如何管理模块间的依赖关系?

(5)何时加载模块?

(6)何时执行模块?

(7)何时使用模块的api?

3.实现模块方式

(1)使用对象

把数据和方法封装到一个对象中。

var module = {
    _currentPage: 0;
    pre: function(){
    // ...
    },
    next: function(){
    // ...
    }
    //...
};

(2)使用立即执行函数

var module = (function(){
    var _currentPage = 0;
    var pre = function(){
       //...
    };
    var next = function(){
       //...
    };
    //...
    return {
         pre: pre,
         next:next
         //...
    }
})();

4.模块化规范

(1)CommonJS规范

服务端模块规范,node.js使用了这个规范。使用require()加载模块,加载完模块再调用模块的api,顺序执行的。

(2)AMD规范

Asynchronous Module Definition即异步模块定义。异步方式加载依赖的模块,模块加载完后回调执行依赖模块的语句,不影响后面语句的执行。

被依赖的模块预先异步加载,预先执行,然后调用回调。

require.js使用了这个规范。

(3)CMD规范

 Common Module Definition即通用模块定义。预先加载所有模块,就近书写,延迟执行模块,并且是顺序执行的。AMD推崇依赖前置,CMD推崇依赖就近。

 sea.js使用了这个规范。

https://segmentfault.com/a/1190000000733959

http://www.cnblogs.com/lvdabao/p/js-modules-develop.html

原文地址:https://www.cnblogs.com/fe-huahai/p/5649238.html