ES6 模块(Module)
## 简介
在编程里,模块是把代码组织成独立且可复用部分的一种方式,它把相关的代码集合起来,方便管理、维护和使用。
* 代码组织:模块能够把代码划分成更小、更易于管理的部分,让程序的结构更加清晰。
* 命名空间管理:模块创建了独立的命名空间,防止不同部分的代码出现命名冲突。
* 代码复用:借助模块,你能够把常用的代码封装起来,在不同的程序里重复使用,避免了代码的重复编写。
历史上,JavaScript 一直没有模块(module)体系,无法将一个大程序拆分成互相依赖的小文件,这不是一个问题,因为最初的脚本又小又简单,所以没必要将其模块化。
随着发展,JavaScript 脚本变得越来越复杂,但是 JavaScript 任何这方面的支持都没有,这对开发大型的、复杂的项目形成了巨大障碍。
在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种,CommonJS 用于服务器,AMD 用于浏览器。
* CommonJS —— 为 Node.js 服务器创建的模块系统。
* AMD —— 最古老的模块系统之一,最初由 require.js 库实现。
* UMD —— 另外一个模块系统,建议作为通用的模块系统,它与 AMD 和 CommonJS 都兼容。
ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可以取代 CommonJS 和 AMD 规范,成为浏览器和服务器通用的模块解决方案。现在,它们都在慢慢成为历史的一部分,但我们仍然可以在旧脚本中找到它们。
## export 命令
一个模块就是一个独立的文件,该文件内部的所有变量,外部无法获取。
模块功能主要由两个命令构成:export和import,export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。