node.js require 相对路径 or 绝对路径
· 阅读需 2 分钟
node.js 加载其他模块时要使用require(路径) ,路过路径加载的一般都是文件模块,程序首先会加上.js扩展名尝试去搜索,如果找不到,就尝试用 .json 格式扩展名去搜索加载,还找不到,就加上扩展名 .node 去搜索加载.
但是这里的路径也有些说道的!
常见的格式:
require('./lib/util');
上面的加载路径是一个相对路径,程序会去所在目录上一层找到lib 文件目录,然后目录下找到 util.js 文件并加载.
如何辩别相对/绝对路径,
相对路径以 . 开始
绝对路径以 / 开始
require('/home/zhangzhi/code/test/test');
上面就是一个绝对路径.
为什么日常开发更推荐相对路径
因为绝对路径虽然看起来明确,但一旦项目换目录、换机器或者换部署环境,就很容易失效。相对路径的好处是它跟着项目结构走,更适合代码在不同环境里迁移。
什么时候还要特别小心
当你的目录层级比较深,或者模块之间有很多交叉引用时,路径写错一层就会直接报找不到模块。这也是为什么后来很多项目会继续引入别名、模块映射之类的方案,本质上都是为了让依赖路径更稳定、更容易读。
所以这篇文章真正想提醒的,不只是“相对和绝对怎么区分”,而是路径本身也是模块设计的一部分。路径越清晰,代码越好维护。
