CommonJSjquery
// 导出 var num = 0; function add(a,b) { return a + b; } module.export = { num: num, add: add } // 导入 var math = require('./math'); math.add(1,2); // 3
AMD(require.js)浏览器
// 定义模块 define('math',['jquery'],function(jquery) { // math依赖jquery模块 return { add: funtion(x,y) { return x + y; } } }) // 导入模块 require(['math'],function(math) { math.add(1,2); })
CMD(sea.js)网络
// 定义模块,导出属性/方法 define(function(require,exports,module) { var add = function(a,b) { return a + b; } exports.add = add; }) // 导入并使用模块 seajs.use(['math.js'],function(math) { var sum = math.add(1,2) })
AMD vs. CMD
AMD:依赖前置,提早执行(预执行) --- 定义模块时就要require
CMD:依赖就近,延迟执行(懒执行) --- 使用模块时才会require
ES6 Module异步
// 导出 math.js var num = 0; var add = function(a,b) { return a + b; } export {num, add} // 导入 math.js import {num, add} from './math' function sum(base) { return add(num,base) } // 默认导出 export default function add(a, b) { return a + b; } // 导入默认 import add from './math' // 同时导入默认及非默认 import add, {sub, mul} from './math' // 复合导出 export { foo, bar } from 'my_module'; // 等同于 import { foo, bar } from 'my_module'; export { foo, bar }; // 导入更名 import { myFoo as Foo } from 'my_module' // 所有导入 import * as someIdentifier from "someModule";