Express中的app.set和app.engine
我正在关注一个Node.js教程 。
我不确定的两行是:
app.set('view engine', 'html'); app.engine('html', hbs.__express);
我检查了app.set
文件 ,它只告诉我:
将设置名称分配给值。
但是我的问题是使用这个的相关性。 我app.engine
它,无论使用app.set
之前被调用。
让我知道在app.set
之前使用app.set
的app.engine
。
编辑
我发现了下面这行,但是我仍然不清楚,因为我第一次使用模板引擎:
但是我们可以通过使用
view engine
指令来告诉Express将HTML文件视为dynamic的,如上所见。
第一行, app.set
告诉Express使用哪个模板引擎:在这种情况下, html
。 这就要求安装一个名称为模板引擎的模板引擎,并且这个模板引擎对带有.html
扩展名的文件感到负责。
如果你正在使用ejs
,例如,这一行就足够了(虽然你通常也有第二次调用app.set
,它定义了查找视图文件的目录):
app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs');
现在,假设你想使用一个模板引擎作为另一个文件扩展名,例如你希望ejs
引擎不仅要处理.ejs
文件,还要处理.html
文件。
在这种情况下,您可以使用第二行,告诉Express对于扩展名为html
文件,您希望调用hbs.__express
函数来渲染它们(因为实际上没有称为html
模板引擎)。 这基本上意味着你想要hbs
引擎来呈现.html
文件。
__express
函数是Node.js下的模板引擎的一个事实上的标准,以便与Express兼容:这就是他们的渲染函数应该被调用,以便Express可以很容易的find它(如果它有不同的名字,你可以configuration它,但这是一个不同的故事)。
希望这可以帮助。