CommonJS、requireJs、ES6的区别与比较
- CommonJS:遵循CMD(同步模块定义),module.exports导出,require()导入
每个文件就是一个模块,有自己的作用域,文件中的变量、函数、类都对其他文件不可见。如果想在多个文件共享变量,必须定义为global对象的属性(不推荐)
requireJs:遵循AMD(异步模块定义),define定义模块,require()加载模块
- require('./app.js'):
- '/':绝对路径
- './':相对路径
- '':默认提供的核心模块(node核心模块,或者通过全局安装或局部安装在node_modules目录中的模块)
ES6:正式提出了内置的模块化语法,我们在浏览器端无需额外引入requirejs来进行模块化
特点:
- 模块自动运行在严格模式下
- 在模块的顶级作用域创建的变量,不会被自动添加到共享的全局作用域,他们只会在模块顶级作用域的内部存在
- 模块顶级作用域的this值为undefined
- 对于需要让模块外部代码访问的内容,模块必须导出它们