如何将Pug设为Express模板引擎?两种views路径配置解析
Express视图引擎路径配置差异解析
先看你当前在用的配置:
// configurations for the view engine app.set('views', './views'); app.set('view engine', 'pug');
这种写法用的是相对路径,它的基准是你启动Node.js进程的当前工作目录,不是代码文件所在的目录。比如你在项目根目录执行node app.js,./views指向的就是根目录下的views文件夹,所以运行正常,但如果换个目录启动(比如从上级目录执行node your-project/app.js),Node会在上级目录找views文件夹,直接报错。
再看教程里的配置:
// configurations for the view engine app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug');
这里核心是两个关键点:
__dirname:Node.js内置变量,代表当前执行这段代码的文件所在的绝对目录路径,不管你从哪启动进程,这个路径都是固定的。path.join():Node.js的path模块方法,专门用来拼接路径,会自动处理不同操作系统的路径分隔符(Windows用\,Linux/macOS用/),避免手动拼接出现的兼容问题。
功能与适用场景
- 第一种写法:仅适合本地测试,且固定从项目根目录启动的场景,优点是写法简单,但容错性极差,一旦启动路径变化就会崩溃,不适合生产环境。
- 第二种写法:是Express项目的标准规范写法,不管你在本地调试还是部署到服务器,不管启动路径怎么变,都能精准定位到views文件夹,完全避免路径错误问题,适合所有生产、开发场景,必须优先使用。
内容的提问来源于stack exchange,提问作者Samson Royal
相关产品推荐
相关产品推荐

