模块化

139 阅读1分钟

模块化的优点:

  • 更好的分离, 按需加载
  • 更高复用性
  • 高可维护性
  1. commonjs (同步加载,服务器端)
导出:module.exports = value或者exorts.xxx = value
导入:require(xxx), xxx为第三方模块名或者文件路径。

commonjs模块加载机制中,导入的值发生变化不会引起导出的值变化

  1. AMD (异步加载,浏览器从服务器端加载模块)
require.config()指定引用路径,
define(id?, deps?, factory)函数定义模块,
require方法加载模块
  1. CMD (异步加载,浏览器端)
定义模块:define(id?, depdencies?, factory)
factory是一个函数,function(require, exports, module)
- require 是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口:require(id)
- exports 是一个对象,用来向外提供模块接口
- module 是一个对象,上面存储了与当前模块相关联的一些属性和方法
引入模块:seajs.use()

AMD和CMD的区别:

AMD推崇依赖前置,定义模块的时候就要声明所依赖的模块。
CMD推崇就近依赖,用到某个模块会去require

4. Es6 (浏览器和服务器通用的模块化方案)

导出:export
导入:import

commonjs与Es6对比:

  • commonjs的输入是值的拷贝,es6的输入是值的引用
  • commonjs是运行时加载 es6是编译时加载