跳到主要内容

node.js require 相对路径 or 绝对路径

· 阅读需 2 分钟
一介布衣
全栈开发者

node.js 加载其他模块时要使用require(路径) ,路过路径加载的一般都是文件模块,程序首先会加上.js扩展名尝试去搜索,如果找不到,就尝试用 .json 格式扩展名去搜索加载,还找不到,就加上扩展名 .node 去搜索加载.

但是这里的路径也有些说道的!

常见的格式:

require('./lib/util');

上面的加载路径是一个相对路径,程序会去所在目录上一层找到lib 文件目录,然后目录下找到 util.js 文件并加载.

如何辩别相对/绝对路径,

相对路径以 . 开始

绝对路径以 / 开始

require('/home/zhangzhi/code/test/test');

上面就是一个绝对路径.

为什么日常开发更推荐相对路径

因为绝对路径虽然看起来明确,但一旦项目换目录、换机器或者换部署环境,就很容易失效。相对路径的好处是它跟着项目结构走,更适合代码在不同环境里迁移。

什么时候还要特别小心

当你的目录层级比较深,或者模块之间有很多交叉引用时,路径写错一层就会直接报找不到模块。这也是为什么后来很多项目会继续引入别名、模块映射之类的方案,本质上都是为了让依赖路径更稳定、更容易读。

所以这篇文章真正想提醒的,不只是“相对和绝对怎么区分”,而是路径本身也是模块设计的一部分。路径越清晰,代码越好维护。