前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NodeJS中的require

NodeJS中的require

作者头像
用户3258338
发布2020-02-11 15:47:48
1.5K0
发布2020-02-11 15:47:48
举报

不要把秘密说给你的朋友,因为你的朋友也有朋友~


1.require()的基本用法


当Node遇到require(X)时,按照下面的顺序处理。

(1)如果X是内部模块(比如require('http'))

a.返回该模块

b.不再继续执行

(2)如果X以'./'或者'/'或者'../'开头

a.根据X所在的父模块,确定X的绝对路径

b.将X当做文件,依次查找下面文件,只要其中有一个存在,就返回该文件,不在继续执行。

X
X.js
X.json
X.node

c.将X当做目录,依次查找下面文件,只要其中有一个存在,就返回该文件,不在继续执行。

X/package.json(main字段)
X/index.js
X/index.json
X/index.node

(3)如果X不带路径

a. 根据 X 所在的父模块,确定 X 可能的安装目录

b. 依次在每个目录中,将X当做文件名或者目录名加载

(4)抛出"not found"

举个例子:

脚本文件/home/ry/projects/foo.js执行了require('bar'),这属于上面的第三种情况,Node内部运行过程如下。

首先确定X的绝对路径可能是下面这些位置,依次搜索每一个目录。

/home/ry/projects/node_modules/bar
/home/ry/node_modules/bar
/home/node_modules/bar
/node_modules/bar

搜索时,Node先将bar当做文件名,依次尝试加载下面这些文件,只要有一个成功就返回。

bar
bar.js
bar.json
bar.node

如果不存在,说明bar可能是目录名,依次尝试加载下面文件。

bar/package.json(main字段)
bar/index.js
bar/index.json
bar/index.node

如果所有目录中,都无法找到bar对应的文件或者目录,就抛出一个错误。

愿我们有能力不向生活缴械投降---Lin

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档