सभी प्रमुख ब्राउज़रों में सहज उपयोगकर्ता अनुभव के लिए क्रॉस-ब्राउज़र जावास्क्रिप्ट डेवलपमेंट में महारत हासिल करें। यूनिवर्सल कम्पैटिबिलिटी स्ट्रेटेजीज़, तकनीकें और सर्वोत्तम अभ्यास सीखें।
क्रॉस-ब्राउज़र जावास्क्रिप्ट डेवलपमेंट: यूनिवर्सल कम्पैटिबिलिटी स्ट्रेटेजीज़
आज के विविध डिजिटल परिदृश्य में, यह सुनिश्चित करना कि आपका जावास्क्रिप्ट कोड सभी प्रमुख ब्राउज़रों में त्रुटिहीन रूप से चले, सर्वोपरि है। उनके द्वारा चुने गए ब्राउज़र की परवाह किए बिना, एक सुसंगत और विश्वसनीय उपयोगकर्ता अनुभव प्रदान करना सफलता के लिए महत्वपूर्ण है। यह व्यापक मार्गदर्शिका क्रॉस-ब्राउज़र जावास्क्रिप्ट डेवलपमेंट के लिए आवश्यक रणनीतियों, तकनीकों और सर्वोत्तम प्रथाओं का पता लगाती है, जो आपको वास्तव में सार्वभौमिक वेब एप्लिकेशन बनाने के लिए सशक्त बनाती है।
क्रॉस-ब्राउज़र कम्पैटिबिलिटी का महत्व
विभिन्न ब्राउज़र जावास्क्रिप्ट कोड की व्याख्या थोड़े अलग तरीकों से करते हैं। ये भिन्नताएं कार्यक्षमता, उपस्थिति और समग्र उपयोगकर्ता अनुभव में असंगतियों का कारण बन सकती हैं। क्रॉस-ब्राउज़र कम्पैटिबिलिटी को संबोधित करने में विफल रहने के परिणामस्वरूप यह हो सकता है:
- टूटी हुई कार्यक्षमता: सुविधाएँ अपेक्षा के अनुरूप काम नहीं कर सकती हैं, जिससे उपयोगकर्ता निराश हो सकते हैं।
- लेआउट मुद्दे: वेबसाइटें गलत तरीके से रेंडर हो सकती हैं, जिससे दृश्य अपील और उपयोगिता प्रभावित होती है।
- सुरक्षा भेद्यताएं: ब्राउज़र-विशिष्ट बग का फायदा उठाया जा सकता है, जिससे उपयोगकर्ता डेटा से समझौता हो सकता है।
- कम उपयोगकर्ता जुड़ाव: खराब अनुभव उपयोगकर्ताओं को दूर कर सकता है, जिससे आपके व्यवसाय पर नकारात्मक प्रभाव पड़ सकता है।
इसलिए, क्रॉस-ब्राउज़र कम्पैटिबिलिटी केवल एक तकनीकी विवरण नहीं है; यह सफल वेब एप्लिकेशन बनाने के लिए एक मौलिक आवश्यकता है।
ब्राउज़र अंतरों को समझना
समाधानों में गोता लगाने से पहले, क्रॉस-ब्राउज़र असंगतियों के मूल कारणों को समझना महत्वपूर्ण है। ये अक्सर इससे उपजे होते हैं:
- विभिन्न जावास्क्रिप्ट इंजन: ब्राउज़र विभिन्न जावास्क्रिप्ट इंजन (उदाहरण के लिए, क्रोम में V8, फ़ायरफ़ॉक्स में स्पाइडरमंकी, सफारी में जावास्क्रिप्टकोर) का उपयोग करते हैं, जो मामूली बदलावों के साथ विनिर्देशों को लागू कर सकते हैं।
- वेब मानकों के लिए समर्थन के विभिन्न स्तर: जबकि ब्राउज़र आम तौर पर वेब मानकों का पालन करते हैं, कार्यान्वयन की डिग्री और समय अलग-अलग हो सकते हैं। पुराने ब्राउज़र में नई सुविधाओं के लिए समर्थन की कमी हो सकती है, जबकि नए ब्राउज़र प्रायोगिक सुविधाएँ पेश कर सकते हैं जो अभी तक मानकीकृत नहीं हैं।
- ब्राउज़र-विशिष्ट बग और क्वर्क: सभी ब्राउज़रों में बग और क्वर्क का अपना अनूठा सेट होता है जो जावास्क्रिप्ट निष्पादन को प्रभावित कर सकता है।
- उपयोगकर्ता कॉन्फ़िगरेशन: उपयोगकर्ता अपनी ब्राउज़र सेटिंग्स को अनुकूलित कर सकते हैं, जैसे जावास्क्रिप्ट को अक्षम करना या एक्सटेंशन का उपयोग करना जो वेबसाइट व्यवहार को संशोधित करते हैं।
उदाहरण के लिए, एक CSS प्रॉपर्टी जो Chrome पर पूरी तरह से रेंडर की गई है, वह सबपिक्सल रेंडरिंग को संभालने में इंजन में बदलाव के कारण फ़ायरफ़ॉक्स पर थोड़ी अलग तरह से प्रदर्शित हो सकती है। इसी तरह, इंटरनेट एक्सप्लोरर के पुराने संस्करणों में आधुनिक जावास्क्रिप्ट सुविधाओं जैसे `fetch` या `async/await` के लिए समर्थन की कमी हो सकती है।
क्रॉस-ब्राउज़र कम्पैटिबिलिटी प्राप्त करने के लिए रणनीतियाँ
यह सुनिश्चित करने के लिए यहां रणनीतियों का एक व्यापक सेट दिया गया है कि आपका जावास्क्रिप्ट कोड सभी प्रमुख ब्राउज़रों पर विश्वसनीय रूप से चले:
1. मानकों के अनुरूप कोड लिखें
वेब मानकों का पालन करना क्रॉस-ब्राउज़र कम्पैटिबिलिटी की आधारशिला है। ECMAScript विनिर्देशों और W3C मानकों के अनुरूप कोड लिखकर, आप विभिन्न ब्राउज़रों में सुसंगत व्यवहार की संभावना को अधिकतम करते हैं।
- आधुनिक जावास्क्रिप्ट सिंटैक्स का उपयोग करें: ES6+ सुविधाओं (जैसे, तीर फ़ंक्शन, कक्षाएं, टेम्पलेट शाब्दिक) को उचित रूप से नियोजित करें, लेकिन पुराने ब्राउज़र समर्थन का ध्यान रखें (नीचे पॉलीफ़िल्स अनुभाग देखें)।
- अपने कोड को मान्य करें: कोडिंग मानकों को लागू करने और संभावित त्रुटियों की पहचान करने के लिए लिंटर्स (जैसे, ESLint) और कोड फ़ॉर्मेटर्स (जैसे, प्रीटियर) का उपयोग करें।
- अभिगम्यता दिशानिर्देशों (WCAG) का पालन करें: सुनिश्चित करें कि आपका कोड विकलांग उपयोगकर्ताओं के लिए सुलभ है, क्योंकि यह अक्सर क्रॉस-ब्राउज़र कम्पैटिबिलिटी के लिए सर्वोत्तम प्रथाओं के साथ संरेखित होता है।
2. फीचर डिटेक्शन (मॉडर्नाइज़र)
ब्राउज़र स्निफिंग (जो अविश्वसनीय है) पर निर्भर रहने के बजाय, यह निर्धारित करने के लिए फीचर डिटेक्शन का उपयोग करें कि कोई ब्राउज़र इसका उपयोग करने से पहले किसी विशिष्ट सुविधा का समर्थन करता है या नहीं। मॉडर्नाइज़र एक लोकप्रिय जावास्क्रिप्ट लाइब्रेरी है जो इस प्रक्रिया को सरल बनाती है।
उदाहरण:
if (Modernizr.geolocation) {
// Browser supports geolocation
navigator.geolocation.getCurrentPosition(function(position) {
// Use the position data
});
} else {
// Browser doesn't support geolocation
alert("Geolocation is not supported in your browser.");
}
मॉडर्नाइज़र फीचर सपोर्ट के आधार पर `` तत्व में कक्षाएं जोड़ता है, जिससे आप CSS शैलियों को सशर्त रूप से लागू कर सकते हैं।
3. पॉलीफ़िल्स और ट्रांसपिलर (बेबेल)
पॉलीफ़िल्स कोड स्निपेट हैं जो कार्यक्षमता प्रदान करते हैं जो मूल रूप से किसी ब्राउज़र द्वारा समर्थित नहीं है। ट्रांसपिलर, जैसे कि बेबेल, आधुनिक जावास्क्रिप्ट कोड (ES6+) को ऐसे कोड में परिवर्तित करते हैं जिसे पुराने ब्राउज़र समझ सकते हैं।
- पॉलीफ़िल्स: `fetch`, `Promise`, `Array.prototype.includes` जैसी सुविधाओं के लिए पॉलीफ़िल्स का उपयोग करें, और अन्य ES5/ES6+ कार्यक्षमताओं को पुराने ब्राउज़रों द्वारा मूल रूप से समर्थित नहीं किया जाता है। `core-js` जैसी लाइब्रेरी व्यापक पॉलीफ़िल समर्थन प्रदान करती हैं।
- ट्रांसपिलर: बेबेल आपको आधुनिक जावास्क्रिप्ट कोड लिखने और इसे स्वचालित रूप से ES5 में बदलने की अनुमति देता है, जिससे पुराने ब्राउज़रों के साथ कम्पैटिबिलिटी सुनिश्चित होती है। उन विशिष्ट ब्राउज़रों को लक्षित करने के लिए बेबेल को सावधानीपूर्वक कॉन्फ़िगर करें जिन्हें आपको समर्थन करने की आवश्यकता है। लक्षित ब्राउज़रों को प्रबंधित करने के लिए ब्राउज़रलिस्ट का उपयोग करने पर विचार करें।
उदाहरण (बेबेल):
बेबेल स्थापित करें:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
`.babelrc` या `babel.config.js` में बेबेल कॉन्फ़िगर करें:
{
"presets": [["@babel/preset-env", {
"targets": {
"browsers": ["> 0.25%", "not dead"]
}
}]]
}
यह कॉन्फ़िगरेशन 0.25% से अधिक वैश्विक उपयोग वाले ब्राउज़रों को लक्षित करता है और मृत ब्राउज़रों को बाहर करता है।
अपने कोड को ट्रांसपिल करें:
npx babel src -d dist
4. ब्राउज़र-विशिष्ट CSS हैक्स (सावधानी के साथ उपयोग करें)
जबकि आम तौर पर हतोत्साहित किया जाता है, ब्राउज़र-विशिष्ट CSS हैक्स का उपयोग प्रतिपादन अंतरों को संबोधित करने के लिए सीमित मामलों में किया जा सकता है। हालाँकि, जब भी संभव हो, फीचर डिटेक्शन और पॉलीफ़िल्स को प्राथमिकता दें।
- सशर्त टिप्पणियाँ (IE-विशिष्ट): ये आपको केवल इंटरनेट एक्सप्लोरर के विशिष्ट संस्करणों के लिए CSS या जावास्क्रिप्ट कोड शामिल करने की अनुमति देती हैं।
- CSS विक्रेता उपसर्ग: प्रायोगिक या गैर-मानक CSS गुणों के लिए विक्रेता उपसर्गों (जैसे, `-webkit-`, `-moz-`, `-ms-`) का उपयोग करें, लेकिन मानक संपत्ति को भी शामिल करना याद रखें।
- जावास्क्रिप्ट ब्राउज़र डिटेक्शन (यदि संभव हो तो बचें): `navigator.userAgent` का उपयोग आमतौर पर अविश्वसनीय होता है। हालाँकि, यदि बिल्कुल आवश्यक हो, तो अत्यधिक सावधानी के साथ संभालें और फ़ॉलबैक समाधान प्रदान करें।
उदाहरण (सशर्त टिप्पणियाँ):
<!--[if IE]> <link rel="stylesheet" href="ie.css"> <![endif]-->
यह CSS फ़ाइल केवल इंटरनेट एक्सप्लोरर में लागू की जाएगी।
5. ब्राउज़रों और उपकरणों पर पूरी तरह से परीक्षण
क्रॉस-ब्राउज़र कम्पैटिबिलिटी मुद्दों की पहचान करने और उन्हें हल करने के लिए परीक्षण महत्वपूर्ण है। एक व्यापक परीक्षण रणनीति लागू करें जिसमें शामिल हैं:
- मैनुअल परीक्षण: अपनी वेबसाइट का मैन्युअल रूप से सभी प्रमुख ब्राउज़रों (क्रोम, फ़ायरफ़ॉक्स, सफारी, एज, इंटरनेट एक्सप्लोरर) और ऑपरेटिंग सिस्टम (विंडोज, मैकओएस, लिनक्स) पर परीक्षण करें।
- स्वचालित परीक्षण: विभिन्न ब्राउज़रों और उपकरणों पर परीक्षण चलाने के लिए स्वचालित परीक्षण टूल (जैसे, सेलेनियम, साइप्रस, पपेटियर) का उपयोग करें।
- वास्तविक डिवाइस परीक्षण: विभिन्न स्क्रीन आकार और रिज़ॉल्यूशन के साथ उत्तरदायित्व और कम्पैटिबिलिटी सुनिश्चित करने के लिए वास्तविक उपकरणों (स्मार्टफोन, टैबलेट) पर परीक्षण करें। ब्राउज़रस्टैक और सॉस लैब्स जैसी सेवाएँ आभासी और वास्तविक उपकरणों की एक विस्तृत श्रृंखला तक पहुँच प्रदान करती हैं।
- उपयोगकर्ता परीक्षण: प्रयोज्य मुद्दों और क्रॉस-ब्राउज़र कम्पैटिबिलिटी समस्याओं की पहचान करने के लिए वास्तविक उपयोगकर्ताओं से प्रतिक्रिया एकत्र करें।
पुराने ब्राउज़रों और कम सामान्य उपकरणों पर परीक्षण पर विशेष ध्यान दें, क्योंकि ये अक्सर वे जगहें होती हैं जहाँ कम्पैटिबिलिटी मुद्दों के होने की सबसे अधिक संभावना होती है।
6. प्रगतिशील वृद्धि
प्रगतिशील वृद्धि वेब डेवलपमेंट का एक दर्शन है जो सभी उपयोगकर्ताओं के लिए एक आधारभूत अनुभव प्रदान करने पर केंद्रित है, जबकि आधुनिक ब्राउज़रों और उपकरणों वाले उपयोगकर्ताओं के लिए अनुभव को बढ़ाता है।
- एक ठोस नींव से शुरुआत करें: अपनी वेबसाइट को सिमेंटिक HTML और CSS के साथ बनाएं जो सभी ब्राउज़रों में काम करे।
- जावास्क्रिप्ट के साथ बढ़ाएँ: इंटरैक्टिव सुविधाएँ जोड़ने और उपयोगकर्ता अनुभव को बढ़ाने के लिए जावास्क्रिप्ट का उपयोग करें, लेकिन सुनिश्चित करें कि जावास्क्रिप्ट अक्षम होने पर भी वेबसाइट कार्यात्मक बनी रहे।
- अनुग्रहपूर्ण क्षरण: अपनी वेबसाइट को पुराने ब्राउज़रों में अनुग्रहपूर्वक क्षरण करने के लिए डिज़ाइन करें, कुछ सुविधाएँ उपलब्ध नहीं होने पर भी एक उपयोगी अनुभव प्रदान करें।
7. क्रॉस-ब्राउज़र जावास्क्रिप्ट लाइब्रेरीज़ का उपयोग करें
कई जावास्क्रिप्ट लाइब्रेरीज़ को क्रॉस-ब्राउज़र कम्पैटिबल होने के लिए डिज़ाइन किया गया है, जो ब्राउज़र अंतरों की जटिलताओं को दूर करती हैं। लोकप्रिय विकल्पों में शामिल हैं:
- jQuery: देशी जावास्क्रिप्ट में प्रगति को देखते हुए अतीत की तुलना में शायद कम महत्वपूर्ण, jQuery अभी भी DOM हेरफेर और इवेंट हैंडलिंग से संबंधित कई ब्राउज़र असंगतियों को सामान्य करता है।
- React, Angular, Vue.js: ये फ्रेमवर्क एक सुसंगत अमूर्त परत प्रदान करते हैं, जो आंतरिक रूप से कई क्रॉस-ब्राउज़र कम्पैटिबिलिटी मुद्दों को संभालते हैं। हालाँकि, विभिन्न ब्राउज़रों में अपने घटकों का परीक्षण करना अभी भी महत्वपूर्ण है।
8. सामान्य क्रॉस-ब्राउज़र मुद्दों का समाधान करें
सामान्य क्रॉस-ब्राउज़र कम्पैटिबिलिटी मुद्दों से अवगत रहें और उपयुक्त समाधान लागू करें:
- बॉक्स मॉडल अंतर (IE): इंटरनेट एक्सप्लोरर की पुरानी बॉक्स मॉडल व्याख्या (क्वर्क्स मोड) लेआउट मुद्दे पैदा कर सकती है। एक CSS रीसेट (जैसे, Normalize.css) का उपयोग करें और सुनिश्चित करें कि आपका दस्तावेज़ मानक मोड में है (एक मान्य डॉकटाइप शामिल करके)।
- इवेंट हैंडलिंग अंतर: विभिन्न ब्राउज़रों में इवेंट हैंडलिंग थोड़ी भिन्न हो सकती है। इवेंट हैंडलिंग को सामान्य करने के लिए क्रॉस-ब्राउज़र इवेंट श्रोताओं या jQuery जैसी लाइब्रेरी का उपयोग करें।
- AJAX/XMLHttpRequest: इंटरनेट एक्सप्लोरर के पुराने संस्करण AJAX अनुरोधों के लिए ActiveXObject का उपयोग करते हैं। एक क्रॉस-ब्राउज़र AJAX लाइब्रेरी या `fetch` API (पुराने ब्राउज़रों के लिए पॉलीफ़िल के साथ) का उपयोग करें।
- जावास्क्रिप्ट त्रुटियाँ: जावास्क्रिप्ट त्रुटियों के लिए अपनी वेबसाइट की निगरानी करने और क्रॉस-ब्राउज़र कम्पैटिबिलिटी मुद्दों की पहचान करने के लिए एक जावास्क्रिप्ट त्रुटि ट्रैकर (जैसे, सेंट्री, बगस्नैग) का उपयोग करें।
क्रॉस-ब्राउज़र कम्पैटिबिलिटी बनाए रखने के लिए सर्वोत्तम अभ्यास
क्रॉस-ब्राउज़र कम्पैटिबिलिटी बनाए रखना एक सतत प्रक्रिया है। यह सुनिश्चित करने के लिए इन सर्वोत्तम प्रथाओं का पालन करें कि आपकी वेबसाइट नए ब्राउज़रों और उपकरणों के साथ कम्पैटिबल बनी रहे:
- वेब मानकों के साथ अप-टू-डेट रहें: नए वेब मानकों और ब्राउज़र अपडेट से अवगत रहें।
- स्वचालित परीक्षण का उपयोग करें: क्रॉस-ब्राउज़र कम्पैटिबिलिटी मुद्दों को जल्दी पकड़ने के लिए अपनी परीक्षण प्रक्रिया को स्वचालित करें।
- त्रुटियों के लिए अपनी वेबसाइट की निगरानी करें: त्रुटियों को जल्दी से पहचानने और हल करने के लिए एक जावास्क्रिप्ट त्रुटि ट्रैकर का उपयोग करें।
- उपयोगकर्ता प्रतिक्रिया एकत्र करें: उपयोगकर्ताओं को उनके द्वारा सामना किए जाने वाले किसी भी मुद्दे की रिपोर्ट करने के लिए प्रोत्साहित करें।
- नियमित रूप से अपने कोड को अपडेट करें: अपने कोड को नवीनतम लाइब्रेरी और फ्रेमवर्क के साथ अप-टू-डेट रखें।
उपकरण और संसाधन
क्रॉस-ब्राउज़र जावास्क्रिप्ट डेवलपमेंट को सरल बनाने के लिए इन उपकरणों और संसाधनों का लाभ उठाएँ:
- ब्राउज़रस्टैक: एक क्लाउड-आधारित परीक्षण प्लेटफ़ॉर्म जो ब्राउज़रों और उपकरणों की एक विस्तृत श्रृंखला तक पहुँच प्रदान करता है।
- सॉस लैब्स: ब्राउज़रस्टैक के समान सुविधाओं वाला एक और क्लाउड-आधारित परीक्षण प्लेटफ़ॉर्म।
- मॉडर्नाइज़र: फीचर डिटेक्शन के लिए एक जावास्क्रिप्ट लाइब्रेरी।
- बेबेल: एक जावास्क्रिप्ट ट्रांसपिलर।
- ESLint: एक जावास्क्रिप्ट लिंटर।
- प्रीटियर: एक कोड फ़ॉर्मेटर।
- क्या मैं उपयोग कर सकता हूँ...: एक वेबसाइट जो वेब तकनीकों के लिए ब्राउज़र समर्थन पर अप-टू-डेट जानकारी प्रदान करती है।
- MDN वेब डॉक्स: वेब डेवलपमेंट प्रलेखन के लिए एक व्यापक संसाधन।
वास्तविक दुनिया के उदाहरण और केस स्टडी
इन वास्तविक दुनिया के परिदृश्यों पर विचार करें जहाँ क्रॉस-ब्राउज़र कम्पैटिबिलिटी महत्वपूर्ण है:
- ई-कॉमर्स वेबसाइटें: यह सुनिश्चित करना कि चेकआउट प्रक्रिया सभी ब्राउज़रों पर निर्बाध रूप से काम करती है, बिक्री को बदलने के लिए महत्वपूर्ण है। कल्पना कीजिए कि जर्मनी में एक उपयोगकर्ता उत्पाद खरीदने की कोशिश कर रहा है लेकिन भुगतान गेटवे उनके सफारी ब्राउज़र पर ठीक से लोड होने में विफल रहता है।
- ऑनलाइन बैंकिंग एप्लिकेशन: सुरक्षा और विश्वसनीयता सर्वोपरि है। कमजोरियों को रोकने और यह सुनिश्चित करने के लिए क्रॉस-ब्राउज़र परीक्षण आवश्यक है कि सभी उपयोगकर्ता अपने स्थान की परवाह किए बिना, अपने खातों को सुरक्षित रूप से एक्सेस कर सकें (उदाहरण के लिए, ग्रामीण भारत में एक उपयोगकर्ता फ़ायरफ़ॉक्स के पुराने संस्करण का उपयोग कर रहा है)।
- सरकारी वेबसाइटें: अभिगम्यता एक प्रमुख आवश्यकता है। सरकारी वेबसाइटें सभी नागरिकों के लिए सुलभ होनी चाहिए, जिसमें सहायक तकनीकों और पुराने ब्राउज़रों का उपयोग करने वाले भी शामिल हैं। कनाडा में एक सरकारी वेबसाइट जो सामाजिक सेवाएँ प्रदान करती है, उसे सभी लोकप्रिय ब्राउज़रों पर काम करना चाहिए।
- शैक्षिक प्लेटफ़ॉर्म: छात्रों को अपने द्वारा उपयोग किए जाने वाले ब्राउज़र की परवाह किए बिना शैक्षिक संसाधनों तक पहुँचने में सक्षम होना चाहिए। समावेशी सीखने के लिए एक सुसंगत अनुभव सुनिश्चित करना महत्वपूर्ण है। ऑनलाइन पाठ्यक्रमों के लिए मूडल का उपयोग करने वाले जापान के एक विश्वविद्यालय को यह सुनिश्चित करने की आवश्यकता है कि उनकी वेबसाइट विभिन्न उपकरणों पर काम करेगी।
निष्कर्ष
क्रॉस-ब्राउज़र जावास्क्रिप्ट डेवलपमेंट किसी भी वेब डेवलपर के लिए एक आवश्यक कौशल है। इस गाइड में उल्लिखित रणनीतियों और सर्वोत्तम प्रथाओं का पालन करके, आप वेब एप्लिकेशन बना सकते हैं जो सभी प्रमुख ब्राउज़रों और उपकरणों पर एक सुसंगत और विश्वसनीय उपयोगकर्ता अनुभव प्रदान करते हैं। मानकों के अनुपालन, फीचर डिटेक्शन और पूरी तरह से परीक्षण को प्राथमिकता देना याद रखें। क्रॉस-ब्राउज़र कम्पैटिबिलिटी के लिए एक सक्रिय दृष्टिकोण अपनाकर, आप यह सुनिश्चित कर सकते हैं कि आपकी वेबसाइट व्यापक संभव दर्शकों तक पहुँचे और अपनी पूरी क्षमता प्राप्त करे। दुनिया तेजी से वेब एप्लिकेशन पर निर्भर है, इसलिए यह सुनिश्चित करना कि वे हर किसी के लिए, हर जगह काम करें, पहले से कहीं अधिक महत्वपूर्ण है।