我有一个使用与此类似的结构构建的Node / Express应用程序:
/lib
coolStuff.js
/routes
funRoute.js
/views
sickView.hbs
app.js
到现在为止,当我想在/lib/coolStuff.js
中引用/routes/funRoute.js
中的内容时,我会写下这样的内容:
var coolStuff = require('../lib/coolStuff');
我很确定在这种情况下相对路径是个坏主意。引用该文件的更好方法是什么?
答案 0 :(得分:1)
您可以使用名为 module-alias
的npm软件包。 npm install module-alias --save
然后在index.js文件(假设它是启动文件)中,按以下方式配置模块别名:
const moduleAlias = require('module-alias');
moduleAlias.addAliases({
'@': __dirname, //Your project root
'@lib': __dirname + '/lib', //Path to your lib folder
'@routes': __dirname + '/routes' //Path to your routes folder
});
然后在其余的应用程序中,只需按以下方式加载模块:
const routes = require('@routes');
const coolStuff = require('@lib/coolStuff');
const app = require('@/app');
相对路由很糟糕,原因之一是,如果移动文件,则需要更改所需路径,否则代码将中断。
此方法的一大挫折是代码自动完成将无法工作,因为您的IDE将无法知道如何找到导入的程序包。
如果您可以不使用代码自动补全功能,那简直就是无法做到。