Express中的app.set和app.engine

Tri*_*der 17 template-engine node.js express handlebars.js

我正在关注Node.js教程.

我不确定的两行是:

app.set('view engine', 'html');
app.engine('html', hbs.__express);
Run Code Online (Sandbox Code Playgroud)

我检查了文档,app.set它只告诉我:

将设置名称指定给值.

但我的问题是使用它的相关性.我用谷歌搜索它,以前app.engine使用app.set过的地方.

让我知道app.set之前使用的重要性app.engine.

编辑

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

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

Gol*_*den 42

第一行app.set告诉Express使用哪个模板引擎:在这种情况下,html.这需要使用该名称安装模板引擎,并且此模板引擎负责具有.html扩展名的文件.

如果您正在使用ejs,例如,这一行就足够了(尽管您通常还有第二次调用,app.set它定义了查找视图文件的目录):

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
Run Code Online (Sandbox Code Playgroud)

现在,假设您希望将模板引擎用于另一个文件扩展名,例如,您希望ejs引擎不仅可以处理.ejs文件,还可以处理.html文件.

在这种情况下,您可以使用第二行,它告诉Express,对于具有扩展名的文件,html您希望调用该hbs.__express函数来呈现它们(因为实际上没有调用模板引擎html).这实际上意味着您希望hbs引擎呈现.html文件.

该__express函数是Node.js下模板引擎的事实标准,它是Express兼容的:这就是它们的渲染函数应该被调用,以便Express可以轻松找到它(如果它有不同的名称,你也可以配置它,但这是一个不同的故事).

希望这可以帮助.