-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
模块化的好处
- 方便代码管理
- 减少全局变量污染
- 方便维护
立即调用表达式IIFE
// 创建一个立即调用的匿名函数表达式
// return一个变量,其中这个变量里包含你要暴露的东西
// 返回的这个变量将赋值给 module
var module = (function() {
var num = 1;
return {
get: function () {
return num;
},
set: function (value) {
num = value;
}
}
})();模块化规范
避免命名冲突,管理模块依赖
- CommonJS
- 同步加载模块,适用于node服务端,不适用于浏览器端
- AMD异步模块定义
- AMD 推崇依赖前置,在定义模块的时候就要声明其依赖的模块。
- CMD通用模块定义
- CMD 推崇依赖就近,只有在用到某个模块的时候再去 require 。
面向未来的 ES6 模块标准
既然模块化已经越来越重要,那么从语言层面上直接去解决这个问题就显得很有必要(况且其他语言早就有了)。于是 ES6 直接在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。
设计思想
简单来说,ES6 模块的设计思想就是:一个 JS 文件就代表一个 JS 模块。在模块中你可以使用 import 和 export 关键字来导入或导出模块中的东西。
ES6 模块主要具备以下几个基本特点:
自动开启严格模式,即使你没有写 use strict
每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域
模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等
每一个模块只加载一次,每一个 JS 只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels