2013-09-27 2 views
1

Есть ли механизм шаблонов для nodejs, таких как razorengine, который специализируется на выводе html, но не ограничиваясь html. Поэтому я мог бы создавать javascript-файлы «на лету» вместе с ним, как я могу с RazorEngine?Есть ли такой движок шаблона, как C# razorengine для nodejs

Примером я хотел бы быть в состоянии сделать:

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> 
+0

Дифференциация здесь заключается в следующем: я не хочу использовать его только для html, я хочу, чтобы иметь возможность генерировать что-либо скрипт, основанный не только на html, и механизм должен быть отделен от отправки HTTP-ответа клиенту ... так же, как razorengine is ... –

ответ

2

В целом, только несколько механизмов просмотра, например Jade, нацелены в основном на создание разметки. Большинство из них будут использовать какую-либо форму встроенных операторов - аналогично Razor's @..., например mustache{{...}} - для поддержки шаблонов любого желаемого текстового содержимого.

И, как правило, любая связь с запросом/ответом будет создана частью рамки http. С экспресс, например (ссылка: app settings, 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 project списки около 20.

0

Вы уже AngularJS (и другие на основе Java-машины), вы можете отобразить данные в angularJS затем вставьте его в HttpResponse. он разработан для клиентской стороны, но с некоторыми тиками он может работать на javascript serveride тоже

+0

Да, спасибо за это, но я не думаю, что это сработает ни на что иное, кроме html и bes ides Я хочу сохранить результаты, не отправляя их клиенту. –

+0

вы можете их хранить, он не отправляет их клиенту автоматически – sino

+0

Я должен признать, что это звучит хорошо с тех пор, когда я могу включать в мои шаблоны угловые директивы и фильтры, не имея необходимости качать язык препроцессора самостоятельно (так как я думал писать мой собственный двигатель). Не могли бы вы указать мне направление, с которого начать. Я использую угловые, но не знаю, как это работает под капотом? –

2

Да есть и его называют razorjs и доступен на GitHub

+0

Эй, человек, спасибо, что упомянул RazorJS. Не могу дождаться, чтобы попробовать. –

Смежные вопросы