前言
模块系统
- 定义封装的模块
- 管理模块之间的依赖关系
- 引入模块
AMD 异步模块定义
特点
- 提前执行依赖模块,预加载
- 推崇依赖前置
requireJs
- require.config() 模块加载自定义 require_conf.js
- 一个文件一个模块
- 加载规范化模块 define()定义
- 加载非规范化的模块,如jquery
- define() 模块定义
- id 模块标识
- dependencies模块依赖
- factory 实例化函数/对象
- r.js 合并与压缩模块文件
- build.js 打包配置文件
- node r.js -o build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19// 独立模块
define({
add: function (x) { return x }
})
// 非独立模块
define(['alpha'], function (alpha) {
return {
add: function (x) { return x }
}
})
// 包装模块,暴露api
define(function(require, exports, module) {
var base = require('base') // 兼容commonJs写法,但仍然是提前加载
var export = {
add: addFun
}
function addFun () {}
return export
})
r.js配置参数
1 | ({ |
api)
CMD 公共模块定义
特点
- 延迟执行依赖模块,按需加载,懒加载
- 推崇依赖就近
- 同步加载,文件加载完才能执行操作
seaJs
1 | define(function(require, export, module) { |
commonJs
- 同步加载,文件加载完才能执行操作
- 服务端模块规范
- node,webpack通过commonJs规范实现
- 定义模块
- require 引入模块
- exports 导出当前模块属性
- module 模块
1 | //file1.js |
UMD 通用模块定义
- AMD和commonJs的糅合,解决跨平台问题
1 | (function (window, factory) { |