【问题标题】:Is there a template engine like c# razorengine for nodejs [duplicate]是否有类似 c# razorengine 的 nodejs 模板引擎 [重复]
【发布时间】:2013-09-27 19:51:39
【问题描述】:

有没有像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>

【问题讨论】:

  • 这里的区别是:我不想只将它用于 html,我希望能够生成任何基于 html 的脚本,并且引擎应该与发送 http 响应分离客户端......就像剃刀引擎一样......

标签: c# javascript node.js


【解决方案1】:

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

而且,通常与请求/响应的任何耦合都将由http 框架的一部分创建。以 Express 为例(参考:app settingsapp.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 project 列出了大约 20 个。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 嘿伙计,感谢您提到 RazorJS。迫不及待想尝试一下。
    【解决方案3】:

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

    【讨论】:

    • 是的,谢谢你,但我认为这对 html 以外的任何东西都不起作用,而且我想存储结果而不是将其发送给客户端。
    • 你可以存储它们,它不会自动发送给客户端
    • 我不得不承认这听起来不错,因为我可以在我的模板中包含角度指令和过滤器,而不必滚动我自己的预处理器语言(因为我正在考虑编写自己的引擎)。你能给我指出一个开始的方向吗?我使用 angular,但不知道它是如何在引擎盖下工作的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2011-11-11
    • 2012-12-29
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多