模块化Module

145 阅读2分钟

「这是我参与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,字符串,函数,对象,类

carbon.png

carbon (1).png

4.2 模块化的整体导出

上边的导出的方式是每个都单独导出,其实一般在项目中,我们都会统一导出,代码如下:

carbon (2).png

4.3 模块化的导入起别名

模块化在导入时,我们可以用as关键字起别名,比如我们在导入上述代码中a时,我们将a重新命名为aaa,代码如下

carbon (3).png

4.4 export default

export default的作用是为模板指定默认输出,这样就不在需要我们知道模板索要加载模块的变量名。

carbon (5).png

carbon (5).png

  • export default 导出的内容必须是提前声明的,不能像下面这样
export default const a = 6

  • export default只能有一个默认导出,下面得代码是错误的

carbon (6).png

  • export default 导出多个

carbon (8).png

carbon (7).png

  • 导入所有

我们可以用另一种方式导入上边的所有导出

carbon (9).png

五、export default与export的区别

  • 在一个文件或模块中,export、import可以有多个,export default仅有一个
  • 通过export方式导出,在导入时要加{ },export default则不需要