Node.js模块化|青训营

53 阅读2分钟

一、什么是模块化与模块?

将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为

模块化

其中拆分出的

每个文件就是一个模块

,模块的内容数据是私有的,不过模块可以暴露内部数据以便其他模块使用。

二、什么是模块化项目?

编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目。

三、模块化好处

防止命名冲突

高复用性

高维护性

四、模块化初体验

编辑

五、模块暴露数据

暴露数据第一种方式:

module

.

exports

=value

编辑

暴露数据第二种方式:

exports

.

name

=value

编辑

注意:

· module.exports

可以暴露

任意

数据

·

不能使用

exports=value

的形式暴露数据,模块内部

module

exports

的隐形关系

exports=module.exports={}

六、导入文件模块

const ti=require('./me.js');

1. require

对于自己导入创建的模块,导入时路径建议写

相对路径

,且不能省略

./

../

2. js

json

文件导入时可以不用写后缀,

c/c++

编写的

node

扩展文件也可以不写后缀,但是一般用不到(若文件名字相同,后缀一个

js

,一个

json

,则会先执行

js

如果导入其他类型文件,会以

js

文件处理

如果导入路径是个文件夹,则会首先检测该文件下

package.json

文件中的

main

属性对应的文件,如果存在则导入,反之如果文件不存在会报错。

如果

main

属性不存在,或者

package.json

不存在,则会尝试导入文件夹下的

index.js

index.json,

如果还是没找到,就会报错

导入

node.js

内置模块时,直接

require

模块的名字即可,无需加

./

../

七、require导入的基本流程(导入自定义模块的)******

将相对路径转为绝对路径,定位目标文件

缓存检测

读取目标文件代码

包裹为一个函数并执行(自执行函数)。通过

arguments.callee.toString()

查看自执行函数

缓存模块的值

返回

module.exports

的值

八、CommonJS模块化规范

module.exports\exports

以及

require

这些都是

CommonJS

模块化规范中的内容

Node.js

是实现了

CommonJS

模块化规范,二者关系有点像

JavaScript

ECMAScript