模块化的好处
解决命名冲突、提高代码的复用性和可维护性
模块化的实现方式
立即执行函数
在早期,使用立即执行函数实现模块化是常见的手段,通过函数作用域解决了命名冲突、污染全局作用域的问题。少用了
1 | (function(globalVariable){ |
AMD 和 CMD
其实这两种实现方式也已经很少见到
CommonJS
Node.js,webpack
每个文件是一个模块,有自己的作用域;在模块内部module变量代表模块本身;module.exports
属性代表模块的对外接口(通过写module.exports
的属性/其本身来导出数据,require
的时候是得到module
,用module
的属性/其本身来获取数据)
模块中写exports
会默认等于module.exports
,也可以用exports
的属性(不能是本身,会重写exports)来导出数据
ES Module
ES6模块功能主要由两个命令构成:import和export。import命令用于输入其他模块提供的功能。export命令用于规范模块的对外接口
1 | // 输出变量 |