जैसा कि ऊपर उल्लेख किया गया है, आपकी स्क्रिप्ट फ़ाइल में सबसे अधिक गुंजाइश का उपयोग करने के साथ समस्याएं हैं। यहां एक और मुद्दा है: स्क्रिप्ट फ़ाइल को उस संदर्भ से चलाया जा सकता है जो कुछ रन-टाइम वातावरण में वैश्विक संदर्भ नहीं है।
इसे window
सीधे वैश्विक को सौंपने का प्रस्ताव किया गया है । लेकिन वह भी रन-टाइम निर्भर है और नोड आदि में काम नहीं करता है। यह बताता है कि पोर्टेबल ग्लोबल वैरिएबल मैनेजमेंट को कुछ सावधान विचार और अतिरिक्त प्रयास की जरूरत है। शायद वे भविष्य के ECMS संस्करणों में इसे ठीक कर देंगे!
अभी के लिए, मैं सभी रन-टाइम वातावरण के लिए उचित वैश्विक प्रबंधन का समर्थन करने के लिए कुछ इस तरह की सिफारिश करूंगा:
var exportGlobal = function(name, object) {
if (typeof(global) !== "undefined") {
global[name] = object;
}
else if (typeof(window) !== "undefined") {
window[name] = object;
}
else {
throw new Error("Unkown run-time environment. Currently only browsers and Node.js are supported.");
}
};
exportGlobal("exportGlobal", exportGlobal);
exportGlobal("someothernamespace", {});
यह थोड़ा अधिक टाइपिंग है, लेकिन यह आपके वैश्विक वैरिएबल प्रबंधन को भविष्य का प्रमाण बनाता है।
डिस्क्लेमर: इस विचार का एक हिस्सा मेरे पास तब आया जब स्टैकट्रेस.जे के पिछले संस्करणों को देख रहा था ।
मुझे लगता है, रन-टाइम वातावरण के अधिक विश्वसनीय और कम हैकिंग का पता लगाने के लिए कोई भी वेबपैक या अन्य टूल का उपयोग कर सकता है।