有没有像 c# razorengine 这样的模板引擎来对付 nodejs

本文关键字:引擎 nodejs razorengine 有没有 | 更新日期: 2023-09-27 18:33:02

是否有像 razorengine 这样专门用于输出 html 但不限于 html 的 nodejs 模板引擎。所以我也可以像使用 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>

有没有像 c# razorengine 这样的模板引擎来对付 nodejs

一般来说,只有少数视图引擎(如 Jade)主要针对生成标记。大多数人会使用某种形式的嵌入式语句 - 类似于Razor的@...,例如胡子的{{...}} - 来支持模板化任何所需的文本内容。

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

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

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

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 个。

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