【问题标题】:How to render .hbs using data based on languages.json?如何使用基于languages.json的数据渲染.hbs?
【发布时间】:2015-11-20 20:34:27
【问题描述】:

我是 node.js 的初学者,当我编写一些 .hbs 视图文件时,我看到其他人喜欢渲染像 {{name}} 这样的变量。但我不知道如何渲染变量将其他json文件存储到hbs模板中。

我有一些语言 .json 文件

{
"name"              : "English",
"layout"            : "Layout",
"centered"          : "Centered",
"streched"          : "Streched",
"theme"             : "Theme",
"language"          : "Language",
"login"             : "Login",
"logout"            : "Logout",
"username"          : "Username",
}

如何将变量渲染到我的 .hbs 模板中

{{#languages}}
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{string.language}} <b class="caret"></b></a>
                <ul id="x-lang" class="dropdown-menu">
                    {{#language}}
                    <li><a href="#{{key}}">{{name}}</a></li>
                    {{/language}}
                </ul>
            </li>
 {{/languages}}

我需要在 app.js 中写一些代码吗?

【问题讨论】:

  • 能否在实际编译模板并传入数据的地方添加代码?
  • 这些代码来自github.com/simov/express-admin,你能通过它查到吗?
  • 这样就达不到目的了。我不会去筛选一些你的工作的文档。它们需要是单独的 JSON 文件吗?如果您想在其他软件中存储数据,最好 module.export 一个对象并在您将数据传递给 HBS 模板的地方使用它。
  • 要让节点从该文件中为您提供一个对象,您需要从您的 JSON 对象中删除尾随逗号,然后 var fs = require('fs'); var obj = JSON.parse(fs.readFileSync('./language.json'))
  • 你有一个叫语言的助手吗?

标签: json node.js express handlebars.js


【解决方案1】:

如果你想通过 express API 发送这个编译的模板,你需要用户

res.send(<templateName>,object);

如果你只是想编译得到hbs -> html 使用

  var template =  handlebars.compile(source);

  var html = template(data);

查看here

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    相关资源
    最近更新 更多