「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。
一、模块化的作用
- 我们在遇到大型项目时,有很多时候,会遇到很多变量挂载到window下,造成全局变量污染
- 在不同的js文件中,某些变量名或者函数名等命名重复
- 在复杂项目中,多个文件之间具有依赖关系,在引入过程中需要保证文件加载顺序
以上问题的出现,我们都可以用模块化解决。
二、模块化的意义
把一个复杂问题自顶向下层层分成若干模块,每个模块都有自己的意义。当这些模块组装到一起,就可以实现我们的功能。
三、模块化规范
-CommonJs:Node.js
这是出现较早的一种模块化规范,是基于node.js的服务端规范,我们知道,我们平时接触的大部分代码是客户端的JS,所以CommonJS具有一定的局限性
- AMD: require.js
require.js是一个比较常用的框架。AMD就是require.js在推广过程中对模块化定义的产出。 AMD:异步模块定义,在这里面我们可以定义回调函数,在回调函数中等待模块加载完成后,我们再在回调函数中完成我们想要的功能。遵循依赖前置,提前执行
- CMD:Sea.js
CMD是sea.js在推广过程中对模块化定义的产出。阿里产出,目前已不维护。遵循就近原则,延后执行。
- ES6模块化规范的突出,标志着JavaScript正式引入模块化
四、ES6模块化
4.1 模块化的基本使用
ES6模块化的导入使用import关键字,导出适应export关键字。
下面得代码我们分别导入导出number,字符串,函数,对象,类
4.2 模块化的整体导出
上边的导出的方式是每个都单独导出,其实一般在项目中,我们都会统一导出,代码如下:
4.3 模块化的导入起别名
模块化在导入时,我们可以用as关键字起别名,比如我们在导入上述代码中a时,我们将a重新命名为aaa,代码如下
4.4 export default
export default的作用是为模板指定默认输出,这样就不在需要我们知道模板索要加载模块的变量名。
- export default 导出的内容必须是提前声明的,不能像下面这样
export default const a = 6
- export default只能有一个默认导出,下面得代码是错误的
- export default 导出多个
- 导入所有
我们可以用另一种方式导入上边的所有导出
五、export default与export的区别
- 在一个文件或模块中,export、import可以有多个,export default仅有一个
- 通过export方式导出,在导入时要加{ },export default则不需要