在ES6前, 前端使用RequireJS或者seaJS实现模块化, requireJS是基于AMD规范的模块化库, 而像seaJS是基于CMD规范的模块化库, 两者都是为了为了推广前端模块化的工具。ES6出来之后,定义了统一的标准,避免五花八门的写法,给大家降低工作量。
ES6的模块化的基本规则或特点
- 每一个模块只加载一次, 每一个JS只执行一次, 如果下次再去加载同目录下同文件,直接从内存中读取。 一个模块就是一个单例,或者说就是一个对象
- 每一个模块内声明的变量都是局部变量, 不会污染全局作用域
- 模块内部的变量或者函数可以通过export导出
- 一个模块可以导入别的模块
特别注意:ES6标准中,导入的数据都是引用
一个模块被多次导入,那么使用的是同一个对象,一处修改,处处生效
对比记忆
python中的import特点:基础类型是值传递,其余是引用传递