1.1模塊查找規(guī)則-當(dāng)模塊擁有路徑但沒有后綴時(shí)
require('./find.js');
1.require方法根據(jù)模塊路徑查找模塊坐梯,如果是完整路徑罚勾,直接引入模塊攀涵。
require('./find');
2.模塊的后綴省略掉,先找同名js文件肋殴,再找同名js文件夾
3.如果找到了同名文件夾囤锉,找文件夾中的index.js
4.如果文件夾中沒有index.js,就會(huì)去當(dāng)前文件夾(find文件夾)下的package.js文件中查找main選項(xiàng)中的入口文件
5.如果指定的入口文件不存在或者沒有指定入口文件就會(huì)報(bào)錯(cuò)护锤,模塊沒有被找到
驗(yàn)證①: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被引用了
驗(yàn)證②:require('./find.js');
在require.js中寫入
require('./find');
命令行工具:PS C:\Node\modulefindRules> node require.js
輸出:modulefindRules 文件夾下的find.js被引用了
驗(yàn)證③:將find.js.bak改名
命令行工具:PS C:\Node\modulefindRules> node require.js
輸出:找不到FOUND文件
驗(yàn)證④:新建find文件夾,新建index.js文件
文件夾modulefindRules,在其下新建文件夾find蔽豺,在其下新建文件index.js
在index.js中寫入
console.log('?find文件夾下的index.js被執(zhí)行了')区丑;
命令行工具:PS C:\Node\modulefindRules> node require.js
輸出:find文件夾下的index.js被執(zhí)行了
驗(yàn)證⑤:文件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被執(zhí)行了');
輸出:find文件夾下的main.js被執(zhí)行了
為什么會(huì)執(zhí)行修陡?先找find文件夾下找index.js沒有找到,去package.jsom文件中找main選項(xiàng)可霎,main指定的是哪個(gè)文件魄鸦,就執(zhí)行哪個(gè)文件。
驗(yàn)證⑥:如果package.json中沒有main選項(xiàng)
輸出:找不到FOUND文件
================================================
1.2模塊查找規(guī)則-當(dāng)模塊沒有路徑且沒有后綴時(shí)
require('find');
1.node.js會(huì)假設(shè)他是系統(tǒng)模塊
2.node.js會(huì)去node_modules文件夾中
3.首先看是否有該名字的文件
4.再看是否有該名字的文件夾
5.如果是文件夾看里面是否有index.js
6.如果沒有index.js查看改文件夾中的package.json的main選項(xiàng)確定模塊入口文件
7.否則找不到報(bào)錯(cuò)
驗(yàn)證①:
在require.js文件中寫入
require('find');
在modulefindRules文件夾下新建node_modules文件夾癣朗,并新建find.js文件
在find.js文件中寫入
console.log('node_modules中的find.js被執(zhí)行了')
命令行工具:PS C:\Node\modulefindRules> node require.js
輸出:node_modules中的find.js被執(zhí)行了
驗(yàn)證②:修改find.js為find.js.bak
node_modules文件夾下新建find文件夾拾因,在其下新建index.js
index.js寫入
console.log('? node_modules 文件夾中find文件夾下的index.js被執(zhí)行了');
命令行工具:PS C:\Node\modulefindRules> node require.js
輸出:?node_modules 文件夾中find文件夾下的index.js被執(zhí)行了
驗(yàn)證③:沒有index.js文件旷余,找package.json
index.js修改為index.js.bak
命令行工具:PS C:\Node\modulefindRules\node_modules\find>npm init -y
生產(chǎn)package.json文件
在?package.json文件中绢记,main指向改為b.js
在find文件夾下新建b.js文件
在b.js文件寫入
console.log('b.js文件被執(zhí)行了');
命令行工具:PS C:\Node\modulefindRules>require.js
輸出:b.js文件被執(zhí)行了
驗(yàn)證④刪除main,使入口文件不存在
命令行工具:PS C:\Node\modulefindRules>require.js
輸出:找不到FOUND文件