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