2013-01-14 28 views
15

मैंने अभी moment.js स्थापित किया है; अब मैं अपने जेड टेम्पलेट के अंदर moment तक पहुंच बनाना चाहता हूं। उदाहरण:जेड टेम्पलेट में सर्वर-साइड स्क्रिप्ट कैसे शामिल करें?

.main-content 
    .container 
     .access-details.clearfix 
      .left 
       div Logged in: <b>#{user.name}</b> 
       div Access Lvl: #{user.accessLevel} 
      .right 
       div= moment().format("dddd, MMMM Do YYYY, h:mm:ss a") 

स्पष्ट है कि, मैं तारीख सर्वर साइड प्रारूप तैयार किया जाता है और फिर एक प्रदान की गई स्ट्रिंग के रूप में ग्राहक को भेजा चाहते हैं।

तो मैं जेड टेम्पलेट के अंदर जावास्क्रिप्ट लाइब्रेरी कैसे उपलब्ध करूं?


मैं शायद नोट करना चाहिए कि मैं एक्सप्रेस के साथ इस का उपयोग कर रहा:

var server = express.createServer(); 
server.configure(function() { 
    server.set('view engine', 'jade'); 

वहाँ कुछ विकल्प में वहाँ किसी भी तरह पारित करने के लिए शामिल किए जाने वाले पुस्तकालयों यह बताने के लिए है है?


बस मुझे यह पता चला कि यह स्थानीय चर में गुजरने से बिल्कुल अलग नहीं है। उदाहरण के लिए,

server.get('/', function (req, res) { 
    res.render('index', { 
     locals: { 
      moment: require('moment') 
     } 
    }); 
}); 

लेकिन मैं इसे हर दृश्य में पास नहीं करना चाहता; अगर मैं इसे कभी भूल गया तो मेरा ऐप टूट जाएगा क्योंकि इसका मुख्य लेआउट में उपयोग किया जाता है। तो मैं कैसे सुनिश्चित कर सकता हूं कि यह हमेशा उपलब्ध रहे?

उत्तर

19

सहायकों एक्सप्रेस 3 से निकाल दिए जाते या 4.

कृपया app.locals

app.locals.moment = require('moment'); 

app.locals वस्तु एक जावास्क्रिप्ट ऑब्जेक्ट का उपयोग करें। इसमें जोड़े गए गुणों को एप्लिकेशन के भीतर स्थानीय चर के रूप में उजागर किया जाएगा।

तो आप किसी भी दृश्य फ़ाइलों में app.locals का उपयोग कर सकते हैं, Jade या EJS;

moment().format('YYYY-MM-DD h:mm:ss'); 
8

This answer मेरी दिशा सही दिशा में मिली, हालांकि dynamicHelpers पर प्रलेखन रहस्य प्रलेखन से रहस्यमय तरीके से गायब हो गया प्रतीत होता है।

इसके अलावा, मुझे गतिशील सहायक की आवश्यकता नहीं थी, केवल एक स्थिर (अनुरोध/प्रतिक्रिया तक कोई पहुंच नहीं)। तो मैंने अंधेरे में एक स्टैब लिया जिसे इसे कहा जाएगा:

server.helpers({ 
    moment: require('moment') 
}); 

एक आकर्षण की तरह काम करता है! moment अब मेरे सभी विचारों में उपलब्ध है।

+14

सहायकों अवधारणा एक्सप्रेस 3. से हटा दिया गया आप "स्थिर सहायकों" से क्या मतलब [ 'app.locals'] (http://expressjs.com/api.html#app.locals) है (' app.locals.moment = आवश्यकता ('पल'); ')। '.dynamicHelpers 'के लिए midwares का उपयोग करें। – elmigranto

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

  • कोई संबंधित समस्या नहीं^_^