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

nodejs的require是如何执行的

作者头像
liulun
发布2019-07-02 17:35:14
8310
发布2019-07-02 17:35:14
举报
文章被收录于专栏:liulunliulun

通常,在Node.js里导入是通过 require函数调用进行的。 Node.js会根据 require的是相对路径还是非相对路径做出不同的行为。

相对路径

相对路径很简单。 例如,假设有一个文件路径为 /root/src/moduleA.js,包含了一个导入

代码语言:javascript
复制
var x = require("./moduleB"); 

Node.js以下面的顺序解析这个导入:

  1. 检查/root/src/moduleB.js文件是否存在。
  2. 检查/root/src/moduleB目录是否包含一个package.json文件,且package.json文件指定了一个"main"模块。 在我们的例子里,如果Node.js发现文件 /root/src/moduleB/package.json包含了{ "main": "lib/mainModule.js" },那么Node.js会引用/root/src/moduleB/lib/mainModule.js。
  3. 检查/root/src/moduleB目录是否包含一个index.js文件。 这个文件会被隐式地当作那个文件夹下的"main"模块。

非相对路径

非相对模块名的解析是个完全不同的过程。 Node会在一个特殊的文件夹 node_modules里查找你的模块。 node_modules可能与当前文件在同一级目录下,或者在上层目录里。 Node会向上级目录遍历,查找每个 node_modules直到它找到要加载的模块。 假设/root/src/moduleA.js里使用的是非相对路径导入:

代码语言:javascript
复制
var x = require("moduleB");

Node则会以下面的顺序去解析 moduleB,直到有一个匹配上。 /root/src/node_modules/moduleB.js /root/src/node_modules/moduleB/package.json (如果指定了"main"属性) /root/src/node_modules/moduleB/index.js /root/node_modules/moduleB.js /root/node_modules/moduleB/package.json (如果指定了"main"属性) /root/node_modules/moduleB/index.js /node_modules/moduleB.js /node_modules/moduleB/package.json (如果指定了"main"属性) /node_modules/moduleB/index.js 注意Node.js在步骤(4)和(7)会向上跳一级目录。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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