1、CommonJS:规范是为了解决JavaScript的作用域问题而定义的模块形式,可以使每个模块它自身的命名空间中执行。
规范内容:模块必须通过module.exports导出对外的变量或者接口,通过require()来导入其他模块的输出到当前模块的作用域中
特点:
1.所有的运行代码都运行在模块的作用域中,不会污染全局作用域
2.模板可以多次加载,但是只会在第一次加载时运行一次,然后运行结果会被缓存。以后再加 载就直接读取缓存结果,想要模块再次运行,就必须清除缓存
3.模块加载的顺序是按照代码中出现的顺序
2、AMD:异步模块化定义,定义了一套js模块依赖异步加载标准,来解决同步加载问题,需要定义回调define方式
3、CMD规范:是在SeaJS在推广过程中对模块化定义的产出
4.ES6模块化:ES6的设计思想是一个模块就是一个独立文件,该文件的所有变量,外部都无法获取。如果你希望外部能够读取内部的某个变量,就必须用export关键字输出该变量,ES6还可以导出类、方法,自动适用严格模式