Express中的app.set和app.engine

时间:2014-04-09 06:33:10

标签: node.js express handlebars.js template-engine

我正在关注Node.js tutorial

我不确定的两行是:

app.set('view engine', 'html');
app.engine('html', hbs.__express);

我检查了app.set app.engine,但它只告诉我:

  

将设置名称指定给值。

但我的问题是使用它的相关性。我用Google搜索了它,并且之前调用了app.set app.set

让我知道在app.engine之前使用view engine的重要性。

修改

我找到了以下行,但我仍然不清楚,因为我第一次使用模板引擎:

  

但是我们可以通过使用{{1}}指令告诉Express将HTML文件视为动态,您可以在上面看到。

1 个答案:

答案 0 :(得分:41)

第一行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可以轻松找到它(如果它有一个不同的名称,您也可以配置它,但这是一个不同的故事。)

希望这有帮助。