2012-07-05 23 views
26

ठीक है मेरे पास अधिकतर स्थिर होमपेज है लेकिन मैं आंशिक विचार चाहता हूं कि नेविगेशन, पाद लेख ect। मैं EJS उपयोग कर रहा हूँ और यह इस तरह दिखता है:ईजेएस आंशिक परिभाषित नहीं किया गया है '

मेरी नियंत्रक: home.js

// Dependencies 
var express = require('express'); 


    module.exports = { 
     get: function(req, res) { 
      app.set('view engine', 'ejs'); 
      var model = { 
      layout:'home', 
        }; 


      res.render('home'); 


     } 
    }; 

मेरे विचारों निर्देशिका एनएवी गया है, घर और पाद सभी .ejs

तब वास्तविक html फ़ाइल छीन पाठ के रूप में निम्नलिखित देखेंगे।

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" > 
<title>Tom Jones</title> 

<!-- CSS --> 
<link rel="stylesheet" href="/css/home.css" type="text/css" media="screen" > 

</head> 
<body> 

<%- partial('nav') %> 

<!--content part --> 
<div id="showcontainer"> 
     <section> 

     </section> 
</div> 

<div id="maincontainer"> 
     <section> 

     </section> 
</div> 

</body> 
</html> 

समस्या कभी मैं इसे बाहर का परीक्षण मैं आंशिक त्रुटि प्राप्त जब परिभाषित नहीं है। मैंने ईजे की आवश्यकता की कोशिश की लेकिन कोई सफलता नहीं मिली।

उत्तर

4

आंशिक 3.x में हटा दिया गया था। यह आंशिक प्रदान करने के लिए अब templating इंजन तक है।

+1

ejs तक या – lostAstronaut

+0

ejs व्यक्त करें। Express.js के लिए एक पुल प्रोजेक्ट है और बहुत से टेम्पलेटिंग इंजन जिन्हें consolidate.js कहा जाता है और यहां पाया जा सकता है: https://github.com/visionmedia/consolidate.js – Pickels

+6

विडंबना यह है कि यह केवल 'आंशिक' है जवाब। क्या आप particolidate.js का उपयोग कर आंशिक 3.x और EJS में आंशिक कार्य करने के तरीके के बारे में एक स्पष्टीकरण प्रदान कर सकते हैं? – Joshua

53

जैसा कि @ पिक्सेल ने कहा, आंशिक 3.x में हटा दिया गया था। हालांकि, EJS का नवीनतम संस्करण "आंशिक" कहा जाता है, भी शामिल है के लिए एक तंत्र प्रदान करता है "में शामिल हैं":

https://github.com/visionmedia/ejs#includes

शामिल, include स्टेटमेंट के साथ टेम्पलेट के सापेक्ष हैं, उदाहरण के लिए अगर आपके पास " ./views/users.ejs "और" ./views/user/show.ejs "आप <% उपयोगकर्ता/शो%> का उपयोग करेंगे। शामिल फ़ाइल (ओं) को शाब्दिक रूप से टेम्पलेट में शामिल किया गया है, संकलन के बाद कोई आईओ प्रदर्शन नहीं किया जाता है, इस प्रकार स्थानीय चर इन टेम्पलेट्स में उपलब्ध हैं।

निम्नलिखित अपने पुराने आंशिक() फ़ंक्शन के लिए एक स्थानापन्न के रूप में काम करेंगे। आपको एक्सप्रेस 3.x को पूरी तरह से समर्थन देने के लिए कहीं और बदलाव करने की आवश्यकता होगी, लेकिन अधिकांश भाग के लिए यह अच्छी तरह से काम करता है (बेहतर वास्तव में - कम कोड और अधिक प्रदर्शन करने वाला)।

<% include nav.ejs %> <!-- replaces your old <%- partial('nav') %> --> 
+3

यहां देखने के लिए चीज आपको फ़ाइल नाम शामिल करने की आवश्यकता है: http://stackoverflow.com/a/13537052/131809 – Alex

+0

इसके अलावा, ejs साइट पर लेआउट सेक्शन में https: // github शामिल करने का एक उदाहरण है। कॉम/visionmedia/ejs/blob/master/Readme.md # लेआउट्स जो कुछ आप ढूंढ रहे हैं उसका समर्थन करने के लिए। –

+0

किसी भी विचार को मूल निर्देशिका में आंशिक रूप से शामिल करने का तरीका क्या है? '../ पथ/आंशिक' का उपयोग करना बिल्कुल काम नहीं करता है ... – Vadorequest

संबंधित मुद्दे