2011-03-23 15 views
43

मैं नोड के लिए एंबेडेड जावास्क्रिप्ट रेंडरर का उपयोग करने के कोशिश कर रहा हूँ जिनमें शामिल हैं: https://github.com/visionmedia/ejsNode.js - EJS - एक आंशिक

मैं चाहूँगा पता है कि कैसे मैं एक और दृश्य फ़ाइल (आंशिक) एक .ejs दृश्य फ़ाइल के अंदर शामिल कर सकते हैं ।

+3

आंशिक प्रणाली वास्तव में ExpressJS का एक हिस्सा है, मैं मानना। क्या आप एक्सप्रेस फ्रेमवर्क का उपयोग कर रहे हैं? – Zikes

+0

नहीं, मैं इसका उपयोग नहीं कर रहा हूं .. अगर मुझे केवल एक टेम्पलेटिंग इंजन के साथ संभव नहीं है तो मुझे शायद उस मार्ग पर जाना होगा। – jeffreyveon

उत्तर

91
एक्सप्रेस 3.0 के साथ

:

<%- include myview.ejs %> 

पथ फोन करने वाले जो विचारों निर्देशिका app.set("views", "path/to/views") के साथ सेट से नहीं, फ़ाइल शामिल से सापेक्ष है।

EJS includes

+1

यह सही जवाब होना चाहिए क्योंकि ईजे/एक्सप्रेस के डेवलपर ने कोड अपडेट किया है। – Joshua

+1

फिक्स्ड, thx, paaading –

-3

ईजेएस वर्तमान में स्वयं आंशिक दृश्यों की अनुमति नहीं देता है। एक्सप्रेस करता है

+4

पुरानी जानकारी। नया संस्करण @pkyeck – Joshua

+1

द्वारा टिप्पणी के अनुसार इसका समर्थन करता है ईजेएस आंशिक अनुमति देता है। – mythicalcoder

3

एक्सप्रेस 3.x नहीं रह गया है आंशिक समर्थन करते हैं। ejs 'partial is not defined' पोस्ट के अनुसार, आप हटाए गए आंशिक कार्यक्षमता को प्रतिस्थापित करने के लिए ईजेएस में "शामिल" कीवर्ड का उपयोग कर सकते हैं।

+1

एक्सप्रेस 3 समर्थन के लिए ejs-locals देखें। – UpTheCreek

10

एक्सप्रेस 4.x में मैं लोड करने के लिए निम्नलिखित का इस्तेमाल किया ejs:

var path = require('path'); 

    // Set the default templating engine to ejs 
    app.set('view engine', 'ejs'); 
    app.set('views', path.join(__dirname, 'views')); 

    // The views/index.ejs exists in the app directory 
    app.get('/hello', function (req, res) { 
    res.render('index', {title: 'title'}); 
    }); 

तो फिर तुम सिर्फ दो यह काम करने के लिए फ़ाइलों की जरूरत है - views/index.ejs:

<%- include partials/navigation.ejs %> 

और views/partials/navigation.ejs:

<ul><li class="active">...</li>...</ul> 

तुम भी एचटीएमएल टेम्पलेट्स के लिए ejs उपयोग करने के लिए एक्सप्रेस बता सकते हैं:

var path = require('path'); 
var EJS = require('ejs'); 

app.engine('html', EJS.renderFile); 

// Set the default templating engine to ejs 
app.set('view engine', 'ejs'); 
app.set('views', path.join(__dirname, 'views')); 

// The views/index.html exists in the app directory 
app.get('/hello', function (req, res) { 
    res.render('index.html', {title: 'title'}); 
}); 

अंत में आप भी ejs लेआउट मॉड्यूल का उपयोग कर सकते हैं:

var EJSLayout = require('express-ejs-layouts'); 
app.use(EJSLayout); 

यह अपने लेआउट के रूप में views/layout.ejs का उपयोग करेगा ।

4

एक्सप्रेस 4.x के रूप में

app.js

// above is all your node requires 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); <-- ./views has all your .ejs files 
app.set('view engine', 'ejs'); 

error.ejs

<!-- because ejs knows your root directory for views, you can navigate to the ./base directory and select the header.ejs file and include it --> 

<% include ./base/header %> 
<h1> Other mark up here </h1> 
<% include ./base/footer %> 
संबंधित मुद्दे