其他如安装的第三方模块(第三方模块)或局部模块(局部模块),每个模块将揭露一个公共API,这样开发者可以import.as

复制代码代码如下所示:
VaR =需要('module_name)


这句话后被执行时,该节点的里面装有一个内置的模块或模块安装在新的需要函数返回一个对象。对象公开的API可以是函数、对象或属性,如函数、数组,甚至任何类型的JS对象。

这里列出了节点模块的加载和缓存机制。

1)加载内置模块(核心模块)
2)加载文件模块(一个文件模块)
3)加载文件目录模块(文件夹模块)
4)装在node_modules模块
5)自动缓存已加载到模块中。

1。加载内置模块

该节点的内置模块被编译成二进制的形式,而不是一个文件路径时参考与直接的名字。当第三方模块和内置的模块是同一个名字,内置模块将覆盖同名的模块第三方。因此,有必要注意不要相同名为内置模块。例如,获得一个HTTP模块

复制代码代码如下所示:
var http =需要('http')


返回的HTTP是实现HTTP函数节点的内置模块。

两。加载文件模块

绝对路径

复制代码代码如下所示:
var MyMOD =需要( / / / my_mod家基地)


或相对路径

复制代码代码如下所示:
var MyMOD =需要('。 / my_mod)


注意,扩展名Js被忽略,下面是点对点

复制代码代码如下所示:
var MyMOD =需要('。 / my_mod)
var MyMOD =需要('。 / my_mod .js)

U3000 U3000
三。加载文件目录模块

您可以直接要求一个目录,假设有一个名为文件夹的目录,例如

复制代码代码如下所示:
var MyMOD =需要('。 /文件夹)


在这一点上,节点将搜索整个文件夹目录和节点假定文件夹是一个包,试图找到包定义文件package.json.if的package.json文件不包含在文件夹目录,节点将承担违约主文件index.js,即,将加载的index.js index.js。如果不存在,然后加载将失败。

如果目录结构如下所示



package.json定义如下

复制代码代码如下所示:
{

主:该.js
}


在这一点上需要('。 /文件夹)将返回到模块moda.js.if package.json不存在,那么模块index.js将返回。如果index.js不存在,将发生异常。

四。在node_modules加载模块

如果模块的名字是不是一个路径或内置模块,节点会在当前目录下的node_modules文件夹搜索。如果当前目录不在node_modules发现,节点将搜索从父目录的node_modules使它复发的根目录。

不用担心,NPM命令可以方便我们安装、卸载、更新node_modules目录。

五。自动缓存已加载到模块中。

加载模块节点将在每次不必搜索的情况下缓存。

moda.js

复制代码代码如下所示:
console.log('module MODA开始加载…)
导出=函数(){
console.log(喂)
}
console.log('module MODA已加载的)


init.js

复制代码代码如下所示:
VaR MOD1 =需要('。 /时尚)
VaR模型=需要('。 /时尚)
console.log(MOD1 = MOD2)


命令行执行:

结init.js

输入如下



你可以看到,虽然需要两倍,moda.js仍然只是表演once.mod1和模型是相同的,即两个引用指向同一个目标模块。