1 全局变量+命名空间 2 common.js 更适合服务器端 3 amd 定义两个全局变量define和require,使用模块加载工具运行(如require.js) 4 umd (Universal Module Definition) 可以直接在浏览器中使用,并兼容common.js和amd 缺点:使用已构建文件,无法按需加载、难以获得底层依赖模块的bug修复支持) 5 es6 module 更规范并支持静态分析,还能 treeshaking:把死的叶子给摇下来,清除实际上并没有在给定项目中使用的代码的过程