如何使用Node.js的模板(把手或任何替代方案)而不使用框架(ex = express)?

时间:2014-05-03 13:54:46

标签: node.js handlebars.js

例如,我有这个JSON文档" foo.json":

{
    "foo": [
        {
            "bar": "Hello World!"
        },
        {
            "bar": "The End"
        }
    ]
}

在Node.js中,我想使用模板(handlebars或any)从JSON文档生成一个字符串,例如:

<p>Hello World!</p><p>The End</p>

...然后将该字符串值分配给Node.js中的变量。最后,我将更多值连接到变量,并将最终变量值输出为html文档。

这可以在不使用像Express这样的框架的情况下完成吗?

1 个答案:

答案 0 :(得分:33)

如果你想使用把手,只需抓住npm模块:

npm install handlebars

然后在您的脚本中,您可以使用把手基于遍历数组foo的简单模板来呈现输出,并为每个项创建<p>,其中包含{{的文本1}} property:

bar

<强> - 编辑 -

如果要使用.hbs模板文件而不是字符串var handlebars = require('handlebars'); // get your data into a variable var fooJson = require('foo.json'); // set up your handlebars template var source = '{{#each foo}}<p>{{this.bar}}</p>{{/each}}'; // compile the template var template = handlebars.compile(source); // call template as a function, passing in your data as the context var outputString = template(fooJson); ,可以使用source模块使用fs读取文件,然后调用fs.readFile返回的缓冲区,并使用它来调用渲染函数。试试这个:

toString()