1.1模块查找规则-当模块拥有路径但没有后缀时
require('./find.js');
1.require方法根据模块路径查找模块,如果是完整路径,直接引入模块。
require('./find');
2.模块的后缀省略掉,先找同名js文件,再找同名js文件夹
3.如果找到了同名文件夹,找文件夹中的index.js
4.如果文件夹中没有index.js,就会去当前文件夹(find文件夹)下的package.js文件中查找main选项中的入口文件
5.如果指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到
验证①:require('./find.js');
新建文件夹modulefindRules,在其下新建文件require.js和find.js
在find.js中写入
console.log(' modulefindRules 文件夹下的find.js被引用了');
在require.js中写入
require('./find.js');
命令行工具:PS C:\Node\modulefindRules> node require.js
输出:modulefindRules 文件夹下的find.js被引用了
验证②:require('./find.js');
在require.js中写入
require('./find');
命令行工具:PS C:\Node\modulefindRules> node require.js
输出:modulefindRules 文件夹下的find.js被引用了
验证③:将find.js.bak改名
命令行工具:PS C:\Node\modulefindRules> node require.js
输出:找不到FOUND文件
验证④:新建find文件夹,新建index.js文件
文件夹modulefindRules,在其下新建文件夹find,在其下新建文件index.js
在index.js中写入
console.log(' find文件夹下的index.js被执行了');
命令行工具:PS C:\Node\modulefindRules> node require.js
输出:find文件夹下的index.js被执行了
验证⑤:文件index.js改名index.js.bak
命令行工具:PS C:\Node\modulefindRules> cd find //切换到find目录
命令行工具:PS C:\Node\modulefindRules\find>npm init // 建立package.json文件
修改package.jsom文件中的main的指向main.js
在find文件夹下新建main.js文件
console.log(' find文件夹下的main.js被执行了');
输出:find文件夹下的main.js被执行了
为什么会执行?先找find文件夹下找index.js没有找到,去package.jsom文件中找main选项,main指定的是哪个文件,就执行哪个文件。
验证⑥:如果package.json中没有main选项
输出:找不到FOUND文件
================================================
1.2模块查找规则-当模块没有路径且没有后缀时
require('find');
1.node.js会假设他是系统模块
2.node.js会去node_modules文件夹中
3.首先看是否有该名字的文件
4.再看是否有该名字的文件夹
5.如果是文件夹看里面是否有index.js
6.如果没有index.js查看改文件夹中的package.json的main选项确定模块入口文件
7.否则找不到报错
验证①:
在require.js文件中写入
require('find');
在modulefindRules文件夹下新建node_modules文件夹,并新建find.js文件
在find.js文件中写入
console.log('node_modules中的find.js被执行了')
命令行工具:PS C:\Node\modulefindRules> node require.js
输出:node_modules中的find.js被执行了
验证②:修改find.js为find.js.bak
node_modules文件夹下新建find文件夹,在其下新建index.js
index.js写入
console.log(' node_modules 文件夹中find文件夹下的index.js被执行了');
命令行工具:PS C:\Node\modulefindRules> node require.js
输出: node_modules 文件夹中find文件夹下的index.js被执行了
验证③:没有index.js文件,找package.json
index.js修改为index.js.bak
命令行工具:PS C:\Node\modulefindRules\node_modules\find>npm init -y
生产package.json文件
在 package.json文件中,main指向改为b.js
在find文件夹下新建b.js文件
在b.js文件写入
console.log('b.js文件被执行了');
命令行工具:PS C:\Node\modulefindRules>require.js
输出:b.js文件被执行了
验证④删除main,使入口文件不存在
命令行工具:PS C:\Node\modulefindRules>require.js
输出:找不到FOUND文件