2014-04-07 13 views
5

Genel olarak düğüm ile başlıyorum ve bir siteyi ifade etmeden yapmaya çalışıyorum. Hiçbiri eJ'yi benim html'ye enjekte etmek için kullanmak istemez ve burası benim sorunumdur ... ejs.render (...) yanıtına nasıl eklenir?Nasıl Yapılır: Ekspresyonu olmadan ejs kullanın

Not: Bu ifade kullanmak için daha iyi bir seçenek olabileceğini biliyorum, ancak bunu köprülemeden önce nasıl çalıştığını bilmek istiyorum. gibi

şey:

var ejs = require("ejs"); 

function index (response, request, sequelize) { 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    test_data = "test data"; 
    response.end(ejs.render("./views/home.html",test_data)); 
} 

exports.index = index; 

Ama bu^_^

Teşekkür çalışıyor!

+0

"Köprüyü bağlamadan önce nasıl çalıştığını bilmek istiyorum." o zaman ekspres kaynağını oku, ne kadar zor olabilir? – mpm

+1

express ... normal düğüm – Manatax

+0

Bunu nasıl ifade ettiğini öğrenmek istersiniz. Ekspres kaynak kodunda okuduğumu ifade etmek için mantıksal olarak ejs.Anyway ifadesinin ne kadar mantıklı olduğunu görürsünüz. başka bir dosyadadır, ancak bunun yerine bir argüman dizisi olarak bir şablon dizesi alır. – mpm

cevap

2

Birçok şablon motoru için ortak bir API sağlayan Consolidate.js adlı bir proje var. Bu, hepsinin birbiriyle değiştirilebilir olmasını sağlar. Şablonları doğrudan oluşturmak istiyorsanız, bu API ile uyumlu olmak istersiniz. Consolidate.js README den

örnek kod:

var cons = require('consolidate'); 
cons.swig('views/page.html', { user: 'tobi' }, function(err, html){ 
    if (err) throw err; 
    console.log(html); // Or write to your `res` object here 
}); 

Bu örnek Swig için, ancak benzer kod Ejs veya uyumlu motorların herhangi biri için çalışıyor. Her şeyden

+0

Bir arayüz olmadan bunu yapmanın bir yolu var mı? – Manatax

+1

Aradığım cevap olmasa da, ejs'ye özel olmasını istedim, bu cevabın daha iyi olduğuna inanıyorum çünkü herhangi bir şablon motora hitap ediyor. – Manatax

4

Birincisi, Sen Ejs yüklemek gerek -> $ npm ejs

Basit bir örnek --save yükleyin:

main.ejs:

<p> <%= exampleRenderEjs %> </p> 

server.ejs

var ejs = require('ejs'); 
var fs = require('fs'); 

var htmlContent = fs.readFileSync(__dirname + '/main.ejs', 'utf8'); 

var htmlRenderized = ejs.render(htmlContent, {filename: 'main.ejs', exampleRenderEjs: 'Hello World!'}); 

console.log(htmlRenderized); 
+0

Harika cevap. Bana çok yardımcı oldu. –

İlgili konular