2013-01-19 12 views
8

मैंने कुछ क्लाइंट साइड घटकों के लिए पोस्ट-प्रोसेसिंग करने के लिए django कंप्रेसर का उपयोग करते समय अपने हैंडलबार टेम्पलेट्स को प्रीकंपाइल करने के लिए एक सरल एनपीएम मॉड्यूल लिखा और पाया कि मुझे कुछ जेएस फाइलों के साथ एनपीएम मॉड्यूल को शिप करने की आवश्यकता है।एनपीएम मॉड्यूल में स्थानीय फ़ाइलों का संदर्भ कैसे लें?

वर्तमान में मैं सिर्फ कोई भी वैश्विक ध्वज के साथ इस संस्थापित कर रहा है, क्योंकि मैं गया है NPM मॉड्यूल में ही मेरी NPM मॉड्यूल के

उदाहरण लेआउट में इन निर्भरताओं के लिए पथ "हार्ड कोडित" मान

/
*/बिन
* /lib/main.js
* /vendor/ember.js

main.js मैं एंबर उपयोग करना चाहते हैं अंदर अब

.js फ़ाइल ... वर्तमान में मेरे हार्ड कोडित दृष्टिकोण इस

var emberjs = fs.readFileSync('node_modules/django-ember-precompile/vendor/ember.js', 'utf8'); 

फिर केवल -इस काम करता है की तरह लग रहा है, क्योंकि मुझे लगता है कि आप इसे स्थानीय स्थापित लेकिन मैं Node.js लगता करना चाहते हैं पाने के लिए एक और अधिक कानूनी तरीका होता है स्थानीय रूप से एम्बेडेड फाइलें

कोई भी जानता है कि मैं इसे "वैश्विक" अनुकूल बनाने के लिए कैसे सुधार सकता हूं?

उत्तर

1

आप क्या कर सकते हैं वर्तमान फ़ाइल की निर्देशिका प्राप्त करें और इसके साथ अपने फ़ाइल पथ बनाएं।

var path = require('path') 
, fs = require('fs'); 

var vendor = path.join(path.dirname(fs.realpathSync(__filename)), '../vendor'); 
var emberjs = fs.readFileSync(vendor + '/ember.js', 'utf8'); 

आशा है कि मदद करता है!

3

नोड.जेएस की महान ताकत में से एक यह है कि आप कितनी जल्दी उठ सकते हैं और चल सकते हैं। इस दृष्टिकोण का नकारात्मक पक्ष यह है कि आपको डिजाइन किए गए डिजाइन पैटर्न को फिट करने के लिए मजबूर होना पड़ता है।

यह एक उदाहरण है जहां आपका दृष्टिकोण नोड्स दृष्टिकोण से बहुत अलग है। नोड टेम्पलेट सहित मॉड्यूल निर्यात से मॉड्यूल में सबकुछ प्रकट होने की अपेक्षा करता है।

readFileSyncdjango-ember-precompile मॉड्यूल में ले जाएं, फिर lib/main.js में मॉड्यूल निर्यात के माध्यम से लौटाए गए मूल्य का पर्दाफाश करें।

उदाहरण:

package.json 
    { 
    "name": "django-ember-precompile", 
    "main": "lib/main.js" 
    } 
lib/main.js 
    module.exports.ember = readFileSync('vendor/ember.js') 
vendor/ember.js 

आप के माध्यम से

var template = require('django-ember-precompile').ember 

यह उदाहरण अपने टेम्पलेट प्राप्त परिष्कृत किया जा सकता है, लेकिन मूल विचार ही है।

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