2013-05-05 24 views
28

Bir şablon şablonu motoru olarak Handlebars.js kullanarak Node.js | Express ile basit bir HelloWorld projesi yapmaya çalışıyorum.Node.js + Express + Handlebars.js + kısmi görünümler

sorun özellikle birden fazla görüntüsü, bu zincir kullanılarak herhangi bir örnekleri bulamadık olmasıdır.

<header> 
    <span>Hello: {{username}}</span> 
</header> 

Ve diğer manzaraya sahip her sayfada kullanmak:

Mesela ben başlık görünümünü tanımlamak istiyorum.

Belki bu görünümleri yanlış bir şekilde düşünüyorum, bu görünümün başka bir görünümün içinde herhangi bir sayfada yeniden kullanabileceğim bir kontrol olduğunu düşündüm.

Eğitebileceğim ya da (çok daha iyi) açık kaynak kodlu bir projeye link verebileceğim herhangi bir bağlantı için minnettarım.

cevap

1

Şu anda "-express gidon" ve mükemmel olarak görüyorum ait ericf uygulanması konusunda kullanıyorum: dahilinde aksine

https://github.com/ericf/express3-handlebars

hatırlamak önemli şey olduğunu, express üzerinde tarayıcı, görünüm işlemleri aşamasında gidonlar aktif hale gelir. İstemci kodu, PHP bağlamında bıyık kullanmış gibi sadece düz HTML olacak.

+3

bu gerçekten soruyu cevaplamıyor ... OP'nin senaryosunu elde etmek için kod yapısı nedir? –

+0

Bu soruya hiç cevap vermiyor. –

31

var https://github.com/donpark/hbs

Diyelim ki olduğunu varsayalım:

+ views 
    - index.hbs 
    + partials 
    - footer.hbs 

Sen partials hangi klasörde kaydetmek gerekir:

hbs.registerPartials(__dirname + '/views/partials'); 

Partials dosya olduğunu tam adını olacaktır. Ayrıca kullanarak partials için özel adlar kayıt olabilirsiniz:

hbs.registerPartial('myFooter', fs.readFileSync(__dirname + '/views/partials/footer.hbs', 'utf8')); 

Sonra böyle erişmek:

burada

için tam bir örnek: https://github.com/donpark/hbs/tree/master/examples/partial

+0

Kod ile tam bir örnek yapabilir misiniz? Belge az –

16

bunu uzun istendiğini biliyorum zaman önce, ama bu yazıya hiç kimse cevap vermedi. Ben de burada yapacağım. Herkesin aynı sayfada olmasını sağlamak için cevabımda çok ayrıntılı olacağım. Aşırı derecede basit görünüyorsa önceden özür dilerim.

Sunucu.js dosyanızda (veya görünüm motorunuz olarak gidonları tanımladığınız her yerde), app.js aracında. Nbs paketiniz olarak kullandığınız şeye, hbs veya express-handlebars vb. Gibi bağlı olarak farklı görünebilir, ancak buna benzer. Not: Bu örnekte express-handlebar kullanıyorum.

dosyası: sunucu.

| /views/ 
|--- /layouts/ 
|----- main.hbs 
|--- /partials/ 
|----- header.hbs 
|----- footer.hbs 
|----- ... etc. 
|--- index.hbs 
| server.js 

Ve main.hbs dosya aşağıdaki gibi görünmelidir: js

... 
var express  = require('express'), 
    hbs   = require('express-handlebars'), 
    app   = express(); 
... 

app.engine('hbs', hbs({ 
    extname: 'hbs', 
    defaultLayout: 'main', 
    layoutsDir: __dirname + '/views/layouts/', 
    partialsDir: __dirname + '/views/partials/' 
})); 

app.set('view engine', 'hbs'); 

... 

ve dosya yapısı bu gibi görünmelidir

dosyası: main.hbs

... 
{{> header }} 
... 
<span> various other stuff </span> 
... 
{{> footer }} 

Bir kısmi belirtmek için Bu sözdizimini kullanın: {{> partialsNames }}.

+0

: - (bu bana işe yaramadı! –

+0

Hey phantom, geç cevap için üzgünüm. Nasıl çalışmıyor? Hata mesajınızı gönderebilir misiniz? –

+0

Ben çalışan adam var! Şerefe! –