2019-10-27node.js中模块的加载机制

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文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容