You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Express中配置app.engine后是否还需要设置view engine参数

问题1:app.engine('ejs', require('ejs-mate'))的实际作用

你的理解完全正确,这是Express框架的模板引擎注册规则:

  • 这行代码的作用是显式绑定.ejs后缀的文件到ejs-mate的渲染处理函数,之后所有后缀为.ejs的模板都会优先交给ejs-mate来解析渲染。
  • ejs-mate是原生EJS的功能增强版,在兼容原有EJS语法的基础上新增了布局、插槽、块级内容继承等能力,所以你注册了这个引擎之后才可以使用ejs-mate提供的布局功能。

问题2:app.set('view engine', 'ejs')的作用,以及是否可以省略

这两个配置的作用完全不冲突,也没有依赖关系:

  • app.set('view engine', 'ejs')的核心作用是设置Express的默认模板后缀,和使用什么引擎渲染没有直接关系。
  • 配置了这个参数之后,你调用res.render('index')的时候,Express会自动补全后缀去找index.ejs文件;如果没有配置这个参数,你调用res.render的时候必须手动补全后缀,也就是要写成res.render('index.ejs')才能正常找到文件。
  • 你测试的时候省略这个配置也能正常运行,大概率是你写render方法的时候都主动加了.ejs后缀,所以不会触发找不到文件的报错。如果你的render调用都省略后缀的话,省略这个配置就会直接报错。

内容的提问来源于stack exchange,提问作者GTB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:45:05