app.set and app.engine in Express



我正在遵循一个Node.js教程。

我不确定的两行是:

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

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

将设置名称分配给值。

但我的问题是使用它有什么意义。我用谷歌搜索了它,无论在哪里使用app.engine app.set以前都叫过。

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

编辑

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

但是我们可以告诉 Express 使用 view engine 指令将 HTML 文件视为动态文件,如上所示。

第一行,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 可以轻松找到它(如果它有不同的名称,你也可以配置它,但那是另一回事(。

希望这有帮助。

最新更新