1. 定义
模块化开发是一种管理方式,是一种生产方式,一种解决问题的方案,一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块
2. 规范
AMD(依赖前置)
CMD(依赖就近)
CommonJS
ES6的模块化
2.1. AMD规范(异步模块定义)
AMD依赖前置,即在定义模块的时候就要声明其依赖的模块。使用此规范的代表有requireJS,requireJS定义了一个函数 define,它是全局变量,用来定义模块
//id:可选参数,用来定义模块的标识,如果没有提供该参数,脚本文件名(去掉拓展名)
//dependencies:是一个当前模块依赖的模块名称数组
//factory:工厂方法,模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值
define(id?, dependencies?, factory)
//dependencies:数组,表示所依赖的模块
//callback:回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块
require([dependencies], callback)
2.2 CMD规范(通用模块定义)
CMD依赖就近,即只有在用到某个模块的时候再去require,使用此规范的代表有seaJS。
1.require 是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口:require(id)
2.exports 是一个对象,用来向外提供模块接口
3.module 是一个对象,上面存储了与当前模块相关联的一些属性和方法
//factory是一个函数,有三个参数,function(require, exports, module)
define(id?, deps?, factory)
2.3. CommonJS
NodeJS就采用了CommonJS
1.模块中使用module.exports、export导出
2.4. ES6的模块化
1.导入用import
2.导出用export