模块化规范的出现

模块化规范的出现

模块化标准 + 模块加载器

commonJS规范

它是node.js中所提出的一种标准,我们在node中的所有代码一定要遵循commonJS规范,规范约定:

  1. 一个文件就是一个模块
  2. 每个模块都有单独的作用域
  3. 通过 module.exports 导出成员
  4. 通过require函数载入模块

commonJS规范规定是以同步的方式加载模块,所以如果在浏览器端使用这种规范,会导致效率地下,所以在早期的前端模块化当中并没有选择commonJS这个规范,而是结合浏览器的特点重新设计了一个规范,这个规范是AMD,同时还推出 require.js的一个库

AMD规范

在这个规范约定每个模块都需要通过define这个模块来定义,这个define方法默认接收2个参数也可以接收3个参数,参数分别是 模块的名字, 一个数组,用来声明模块的依赖项,第三个参数是一个函数,这个函数的参数是第二个参数数组里模块导出的成员,这个函数的作用就是为当前模块提供私有空间
如果在这个模块中需要向外部导出一些成员的话,我们可以通过return的方式来实现

模块化规范的出现
同时 require.JS提供了require模块,用来帮我们自动加载模块,用法与define函数相似,区别在于

  • require函数用于加载模块
  • define函数用来定义模块

模块化规范的出现
当require.JS需要加载模块的时候,内部会自动创建一个script的标签,去发送对应的脚本文件请求,并且执行相应的模块代码

AMD的缺点

  • 在开发过程中除了业务代码,我们还需要使用AMD的define,require等操作模块的代码,这些会导致我们代码的复杂程度的提高
  • 在项目中,如果模块划分过于细致,在同一个页面对js文件请求次数就会特别多,从而会导致页面效率底下