2013-05-28 20 views
5

Kısmenler için ejs kullanmak ve tek tek sayfalar için yeşim kullanın, her ikisi de bir nodejs & ekspres projesinde nasıl kullanılır?tek bir düğümde & express projesinde ejs ve yeşim nasıl kullanılır?

+2

: http://stackoverflow.com/a/15064438/1266006 –

+0

Merak etme, neden bunu yapmak istersiniz? – esp

+1

Kısmi olarak, değişkenleri hızlı ve yeterli bir şekilde değiştirmek için yalnızca kullanım çubuklarını kullanın, karmaşık sayfalar için güçlü bir şablonlama motoru gereklidir. Bu bağlıdır.Anladım ve paylaşacağım –

cevap

8

's github de expressjs api docs ve consolidate.js yolu bulmak kolay

Referans aşağıda express.js doc parçası lütfen


app.engine (dahili, geri arama)

Verilen şablon motor geri bildirimini ext olarak kaydet Varsayılan olarak,() dosya uzantısına dayalı olarak motoru gerektirir. Örneğin, bir "foo.jade" dosyasını oluşturmaya çalışırsanız, Express aşağıdakileri dahili olarak çağırır ve performansı artırmak için sonraki çağrılarda require() öğesini önbelleğe alır. ya da şablon motoruna farklı bir uzantısı "harita" istiyorsanız bu yöntemi kullanabilir - kutudan ifade .__ vermeyin motorlar için

app.engine('jade', require('jade').__express); 

. Not olsa, (yol, seçenekler, geri arama): EJS Ekspres beklediğini aynı imzaya sahip bir .renderFile() yöntem sağlar Bu durumda

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

: EJS şablonu ".html" dosyalarına motoru haritalama Örneğin Bu yöntemi ejs .__ içsel olarak taklit ettiğinden, ".ejs" uzantıları kullanıyorsanız, hiçbir şey yapmanıza gerek yoktur.

Bazı şablon motorları bu kuralı takip etmiyor, consolidate.js kitaplığı, tüm düğümün popüler şablon motorlarını bu sözleşmeyi izleyecek şekilde eşlemek için oluşturuldu ve böylece Express'te görünmesiz çalışmasına olanak sağladı.

var engines = require('consolidate'); 
app.engine('haml', engines.haml); 
app.engine('html', engines.hogan); 
+2

Ama 'express.set '(' view engine ',' ext ');' bir yerlerde kullanmam gerekmiyor mu? – theonlygusti

+0

@theonlygusti Bunu detaylandırır mısınız? Bunu çalıştırmaya çalışıyorum ve konsolidasyon kullanıldığında varsayılan bir 'görünüm motorunun 'gerekli olup olmadığından emin değilim? Dokümanlardayım, eğer bir tane varsa, ref'e bir işaretçi takdir edilecektir. Teşekkürler. –

2

bu benim için çalışır:

index.js

const express = require('express'); 
const path = require('path'); 
const app = express(); 
// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'pug'); 
app.set('view engine', 'ejs'); 
    1. boksör ve Ejs eklemek t = "2">
    2. Bir filename.fileext ile arama işlemi.

    yolları/kullanıcıların

    const express = require('express'); 
    const router = express.Router(); 
    router.get('/', function (req, res, next) { 
        res.render('users.ejs'); 
    }); 
    module.exports = router; 
    

    yolları/Bu cevap size yardımcı olabileceğini düşündüğümüz yaklaşık

    const express = require('express'); 
    const router = express.Router(); 
    router.get('/', function (req, res, next) { 
        res.render('about.pug'); 
    }); 
    module.exports = router; 
    
+0

"pug" adlı yeni adı getirdiğiniz için teşekkür ederiz. Bu şeylere yeniyim. "Consolidate.js" ile herhangi bir test yaptınız mı? Bence bu, ejs'yi kullanarak ön tarafa tek bir değişken sağlamaya çalıştığım için almam gereken rota. –

+0

mocha + assert ile test yaptım – joseAndresGomezTovar

+0

'consolidate.js'ye baktım ama en iyi şekilde anladım, render yaklaşımları tek bir sayfada karıştırmama izin vermiyor. Zaten “PUG” yi kullandığım için, verileri almak için AJAX'ın yoluna gittim. Overkill .... –

İlgili konular