1

有没有像razorengine这样的nodejs模板引擎,专门输出html但不限于html。所以我也可以像使用 RazorEngine 一样使用它即时创建 javascript 文件吗?

我希望能够做到的一个例子:

var fs = require('fs');
var engine = require('templatingEngine');

var template = "<p>Hello, <% name %></p>";
var data = [
    {id:"1", name: "bob"},
    {id:"2", name: "pete"},
    {id:"3", name: "jake"}
    ];

var result = engine.parse(template, data);

fs.writeFile("/tmp/hellos.html", result, function(err) {
    if(err) {
        console.log(err);
    } else {
        console.log("The file was saved!");
    }
});

hellos.html ==>

<p>Hello, bob</p>
<p>Hello, pete</p>
<p>Hello, jake</p>
4

3 回答 3

2

通常,只有少数视图引擎,例如Jade,主要针对生成标记。大多数将使用某种形式的嵌入语句——类似于 Razor 的@...,例如mustache{{...}}——来支持模板化任何所需的文本内容。

而且,通常与请求/响应的任何耦合都将由http框架的一部分创建。以 Express 为例(参考:应用程序设置app.engine()):

app.set('view engine', 'jade');
app.engine('html', require('ejs').renderFile);

确切的 API 可能因视图引擎而异。但是,使用Handlebars,您可以:

var handlebars = require('handlebars');

var template = "{{#each this}}<p>Hello, {{name}}</p>{{/each}}";
var compiledTemplate = handlebars.compile(template);

var data = [
    {id:"1", name: "bob"},
    {id:"2", name: "pete"},
    {id:"3", name: "jake"}
    ];

var result = compiledTemplate(data);

而且,对于视图引擎的示例,该consolidate项目列出了大约 20 个。

于 2013-09-27T22:24:00.310 回答
2

是的,它被称为 razorjs,可在 github 上找到

于 2013-09-28T12:19:55.190 回答
0

您已经拥有 AngularJS(和其他基于 javascript 的引擎),您可以在 angularJS 中渲染数据,然后将其推送到 httpresponse。它是为客户端设计的,但是有一些柚木它也可以在javascript服务器端工作

于 2013-09-27T20:07:44.057 回答