【问题标题】:app.set and app.engine in ExpressExpress 中的 app.set 和 app.engine
【发布时间】:2014-04-09 06:33:10
【问题描述】:

我正在关注Node.js tutorial

我不确定的两行是:

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

我检查了documentationapp.set,它只告诉我:

将设置名称分配给值。

但我的问题是使用它的相关性是什么。我用谷歌搜索了它,在使用 app.engine 的任何地方之前都调用了 app.set

让我知道在app.engine之前使用app.set的意义。

编辑

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

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

【问题讨论】:

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


    【解决方案1】:

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

    希望这会有所帮助。

    【讨论】:

    • 如果您添加 process.cwd() +/views 是查找视图的默认目录,答案就很好。并且肯定可以改变。
    猜你喜欢
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多