2016-10-21 10 views
5

कई सापेक्ष प्रश्न होने के बावजूद, वे निम्न समस्या को हल करने का उत्तर नहीं देते हैं।ब्राउज़र सक्रिय वैश्विक चर डालें

मेरे पास एक nodejs फ़ाइल index.js है।

var browserify = require('browserify'); 

var data = getSomeData(); 
browserify('entry.js').bundle(); 

मैं तो चाहता हूँ कि dataentry.js में पहुँचा जा सकता है। मुझे ब्राउजरिफ़ विकल्प insertGlobalVars मिला लेकिन मुझे कोई उचित दस्तावेज या उदाहरण नहीं मिल सका। मैंने {insertGlobalVars: {myVar: someData}} की कोशिश की लेकिन यह काम नहीं करता है।

मैं require('someData') पर कॉल नहीं कर सका क्योंकि मेरा डेटा केवल index.js निष्पादित करते समय उत्पादित होता है।

अद्यतन: डेटा एक सरणी है; कुंजी एक फ़ाइल नाम है, मूल्य - फ़ाइल सामग्री (आकार लगभग 500 बी है)।

+0

किस प्रकार का डेटा? क्या यह जेएसओएन में परिवर्तनीय है? और यह कितना बड़ा है? – cartant

+0

@cartant मैंने प्रश्न – FreeLightman

उत्तर

5

insertGlobalVars विकल्प object that contains functions (file और basedir तर्कों के साथ बुलाया जाता है) लेता है। तो अगर आप इस तरह अपने insertGlobalVars विकल्प निर्दिष्ट करने के लिए होगा:

var browserify = require('browserify'); 
var someData = getSomeData(); 

browserify('entry.js', { 
    insertGlobalVars: { 
     someData: function() { return JSON.stringify(someData); } 
    } 
}) 
.bundle() 
.pipe(process.stdout); 

ध्यान दें कि डेटा केवल बंडल में शामिल किया जाएगा यदि someData वैश्विक कोड में वास्तव में प्रयोग किया जाता है। और ग्लोबल का उपयोग करने वाले प्रत्येक मॉड्यूल को अपनी प्रति प्राप्त होगी।

बंडल में एक अतिरिक्त मॉड्यूल इंजेक्ट करना संभव होगा, ताकि डेटा की आवश्यकता हो (और बंडल में डेटा की केवल एक प्रतिलिपि होगी), लेकिन यह बातचीत के कारण अधिक जटिल होगी module-deps और फ़ाइल सिस्टम। अधिक जानकारी के लिए, आप इस answer पर एक नज़र डाल सकते हैं।

+0

अद्यतन किया है उत्तर उत्तर स्वीकार्य से अधिक है। लेकिन मुझे वास्तव में जो आवश्यक है वह उचित ब्राउज़र दस्तावेज है। यदि यह अस्तित्व में था, तो मैंने इस सवाल से नहीं पूछा था। मैंने एक स्रोत कोड ब्राउज़ करने का प्रयास किया, लेकिन यह भी युग्मित है और मुझे कुछ भी समझ में नहीं आया। – FreeLightman

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