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