Node.js自学笔记(五)

五、Node.js中模块加载机制

5.1模块查找规则-当模块拥有路径但没有后缀时

require('./find')
  1. require方法根据模块路径查找模块,如果是完整路径,直接引入模块。
  2. 如果模块后缀省略,先找同名JS文件,再找同名JS文件夹
  3. 如果找到了同名文件夹,那么则会在该文件夹中找jindex.js文件
  4. 如果文件夹中没有index.js,则会去当前文件夹中的package.json文件中查找main选项中的入口文件
  5. 如果找指定的入口文件不存在或没有指定入口文件,此时便会报模块没有被找到的错误

请看示例

首先我将创建一个名为modulefindRules的文件夹,并在当中创建一个名为require.js的文件,我将在这个文件当中对其他模块进行引用,以验证模块的查找规则。接着我再创建一个名为find.js的文件,并写入一些输出代码,这个文件便是我们要查找的模块。
在这里插入图片描述在这里插入图片描述
下面我在require.js文件中使用完整的模块路径引用find.js
在这里插入图片描述
最后在命令行使用node命令执行require.js文件,如果有输出,那么就证明可以引用成功
在这里插入图片描述
如上图所示,引用成功。

下面我来换一种引用方式,我将对require.js中的代码做一些修改,如下图
在这里插入图片描述
我将引用文件名的后缀去掉了,那么此时还可以引用成功吗?
在这里插入图片描述
再次执行后可以发现,依然能够引用成功

现在我们来看下一种情况,即没有同名js文件的情况。根据我一开始列举的模块查找规则。当没有找到同名js文件时,系统便会去找同名文件夹。

请看示例
首先我先将之前的find.js重新命名,然后创建一个名为find的文件夹,并在当中创建一个名为index.js的文件,最后在这个文件里面写入一些输出代码。
Node.js自学笔记(五)_第1张图片在这里插入图片描述
接着我们再到命令行当中去,看看能不能成功执行在这里插入图片描述
可以看到,依然成功执行了

接着我们来看最后一种情况,就是在同名文件夹中没有index.js的情况,也就是说,系统要去package.json文件中查找main选项中的入口文件。

首先来重命名index.js,并且生成package.json文件Node.js自学笔记(五)_第2张图片
Node.js自学笔记(五)_第3张图片
接下来我们在代码编辑器中查看一下package.json文件
Node.js自学笔记(五)_第4张图片
可以看到,main选项默认是指向index.js的,我们现在要更改它的指向为main.js,并且在find文件夹中创建main.js文件,然后写入一些输出代码,以作为示例。
在这里插入图片描述
在这里插入图片描述
最后,我们回到modulefindRules目录中重新执行node命令
在这里插入图片描述
执行成功

你可能感兴趣的:(nodejs)