【问题标题】:Node js hbs module and engineNode js hbs 模块和引擎
【发布时间】:2015-02-05 04:46:21
【问题描述】:

我是 node js 的新手,遇到了这个 hbs 模块,并在这部分代码中看到了它,例如:

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

谁能解释一下什么是 hbs(车把 - 但它有什么作用)? 如果第一行已经说明文件将以 html 格式打开,为什么还需要第二行

谢谢!

【问题讨论】:

    标签: html node.js express viewengine


    【解决方案1】:

    hbshandlebars.js javascript 模板引擎express.js 包装器Handlebars.js 是一个模板引擎,可以让编写 html 代码更容易,有兴趣的可以看看here。但是 handlebars.js 是为了客户端编译(浏览器编译模板),所以你需要像 hbs 这样的 wrapper

    wrapper 使得在 express.js 中使用例如客户端库成为可能,而这正是 hbs 所做的。这有点简化,但它解释了原理。

    关于第二个问题,为什么需要第二行。那是因为如果你使用标准线:

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

    express.js 查找名为 hbs视图引擎,但在您的示例中:

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

    express.js 知道在 view engine 定义为 html 的情况下要查找什么,并且您必须定义此 view engine在第二行,所以 express.js 知道要查找什么。如果您查看here,您会看到它说,Express 在内部加载它

    【讨论】:

    • 感谢您的回答。所以第二行指定使用哪个包装器?例如当我写 app.set('view engine', 'jade');难道我也写这样的东西吗,我看到了一个没有用玉做的例子
    • 不,您不需要对 jade 执行此操作,因为之后,jade 已经告诉 express.js 在 view engine 的情况下要查找什么 i> 定义为 jade
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2013-03-29
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多