一、模块化发展历程

  • 有利于代码分离,解耦以及复用
  • 团队并行开发
  • 避免命名冲突
  • 相互引用,按需加载

单例设计模式
AMD
CMD
UMD
CommenJS
ES6 Module

二、单例

  1. // 单例模式
  2. let module = (function() {
  3. const init = () => {}
  4. return {
  5. init
  6. }
  7. })()
  8. module.init()

三、AMD

依赖前置
require.js

  1. define([name]?, [dependence]?, [facory])

四、CMD

依赖就近
sea.js

  1. define(function (requie, exports, module) {
  2. //依赖可以就近书写
  3. var a = require('./a');
  4. a.test();
  5. ...
  6. //软依赖
  7. if (status) {
  8. var b = requie('./b');
  9. b.test();
  10. }
  11. });

四、commonJS

node.js
文件即模块

  1. // require
  2. // module.exports

五、UMD

兼容amd和commonJS 即浏览器和服务端

六、ES Module