我正在关注 Node.js tutorial .
我不确定的两行是:
app.set('view engine', 'html');
app.engine('html', hbs.__express);
我查看了documentation对于 app.set
它只告诉我:
Assigns setting name to value.
但我的问题是使用它的相关性是什么。我用谷歌搜索了它,在任何使用 app.engine
的地方 app.set
之前都被调用过。
让我知道在 app.engine
之前使用 app.set
的意义。
编辑
我找到了以下行,但由于我是第一次使用模板引擎,所以我仍然不清楚:
But we can tell Express to treat HTML files as dynamic by using the
view engine
directive, you see above.
最佳答案
第一行,app.set
告诉 Express 使用哪个模板引擎:在本例中,html
。这要求安装一个使用该名称的模板引擎,并且该模板引擎负责处理具有 .html
扩展名的文件。
如果您使用的是 ejs
,例如,这一行就足够了(尽管您通常还会第二次调用 app.set
来定义要查看的目录查看文件):
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
现在,假设您想为 another 文件扩展名使用模板引擎,例如您希望 ejs
引擎不仅可以处理 .ejs
文件,还可以处理 .html
文件。
在这种情况下,您可以使用第二行,它告诉 Express 对于扩展名为 html
的文件,您希望调用 hbs.__express
函数来呈现它们(因为实际上没有称为 html
的模板引擎)。这实质上意味着您希望 hbs
引擎呈现 .html
文件。
__express
函数是 Node.js 下模板引擎与 Express 兼容的事实上的标准:这就是它们的渲染函数应该被调用以便 Express 可以轻松找到它(如果它有一个不同的名字,你也可以配置它,但那是另一回事)。
希望这会有所帮助。
关于node.js - Express 中的 app.set 和 app.engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22954561/