// common.js
module.exports.add=function(a, b){return a + b
}
exports.add=function(a, b){return a + b
}// index.jsconst common =require('./common.js')
common.add(10,20)
ES Module
定义模块:export, export default
加载模块: import from
export导出属性需要声明变量
浏览器端,es6,编译时输出接口,模块对象引用
// common.jsexportfunctionadd(a, b){return a + b
}exportdefault{
add
}// index.jsimport common from'./common.js'import{ add }from'./common.js'
common.add(10,20)
requireJs/AMD
定义模块:define(id?, deps?, factory)
加载模块:require([module], factory)
浏览器端,异步加载,依赖前置
// common.jsdefine('common',['utils','require','exports'],function(utils, require, exports){
exports.add=function(a, b){return a + b
}
exports.utils=function(){returnrequire('./util.js')}})// index.jsrequire(['common'],function(common){
common.add(10,20)})
SeaJS/CMD
定义依赖: 无需列依赖
require, exports, module 顺序固定
浏览器端,异步加载,依赖就近,
// common.jsdefine(function(require, exports, module){
exports.add=function(a, b){return a + b
}})// index.jsdefine(function(require){const common =require('./common.js')
common.add(10,20)})
动态加载/import()
返回一个promise
import('./common.js').then(common=>{
common.add(10,29)})const common =awaitimport('./common.js')
common.add(10,20)