2017-12-31 8 views
7

मैं प्राथमिक स्रोत के रूप में मोज़िला डेवलपर नेटवर्क (एमडीएन) दस्तावेज़ का उपयोग कर जावास्क्रिप्ट वेब वर्कर एपीआई के बारे में सीख रहा हूं। The documentation suggests कि एक नए कर्मचारी के लिए निर्माता type पैरामीटर स्वीकार करता है। उसी दस्तावेज़ के अनुसार यह type पैरामीटर classic या module के मान स्वीकार कर सकता है।"क्लासिक" और "मॉड्यूल" वेब वर्कर के बीच क्या अंतर है?

दुर्भाग्यवश, प्रलेखन classic और module के बीच के अंतर का वर्णन नहीं करता है। मैं classic बनाम module का उपयोग करना चाहता हूं और श्रमिकों के दो प्रकारों के बीच क्या व्यवहार अंतर है?

उत्तर

4

module प्रकार लगभग type="module" attribute does for a script tag के समान उद्देश्य प्रदान करता है। यह ब्राउजर को बताता है कि वर्कर स्क्रिप्ट लोड किया जा रहा है एक ईएस 6 मॉड्यूल (जो आवश्यक मेटा डेटा है, यह जानने के लिए कि इसे कैसे पार्स और रन करें, as this article goes into a bit)।

यदि आपका कार्यकर्ता मॉड्यूल ईएस 6 मॉड्यूल था (संभवतः import कथन के साथ) तो आप इसका उपयोग करेंगे। सीओआरएस सक्षम होने पर एक कार्यकर्ता को एक अलग मूल से लोड करने में सक्षम होने का बोनस भी है, जो क्लासिक श्रमिक नहीं कर सकते (जो एक आकर्षक विशेषता हो सकती है, भले ही import कथन का उपयोग न करें)।

से HTML Living Standard - Using a JavaScript module as a worker:

हमारे उदाहरण के सभी अब तक श्रमिकों कि क्लासिक स्क्रिप्ट चलाने दिखा। श्रमिकों को मॉड्यूल स्क्रिप्ट का उपयोग करके तत्काल प्रारंभ किया जा सकता है, जिनके सामान्य लाभ होते हैं: अन्य मॉड्यूल आयात करने के लिए जावास्क्रिप्ट आयात विवरण का उपयोग करने की क्षमता; डिफ़ॉल्ट रूप से सख्त मोड; और शीर्ष-स्तरीय घोषणाएं कार्यकर्ता के वैश्विक दायरे को प्रदूषित नहीं करती हैं।

ध्यान दें कि ऐसे मॉड्यूल-आधारित कर्मचारी क्लासिक श्रमिकों की तुलना में क्रॉस-मूल सामग्री के संबंध में विभिन्न प्रतिबंधों का पालन करते हैं। क्लासिक श्रमिकों के विपरीत, मॉड्यूल श्रमिकों को क्रॉस-मूल स्क्रिप्ट का उपयोग करके तत्काल किया जा सकता है, जब तक कि उस स्क्रिप्ट को CORS प्रोटोकॉल का उपयोग करके उजागर किया जाता है। इसके अतिरिक्त, आयातक() विधि मॉड्यूल श्रमिकों के अंदर स्वचालित रूप से विफल हो जाएगी; जावास्क्रिप्ट आयात विवरण आम तौर पर एक बेहतर विकल्प है।

आज तक, आप शायद इसे उत्पादन में उपयोग नहीं करेंगे क्योंकि ES6 मॉड्यूल के लिए ब्राउज़र समर्थन इतना अच्छा नहीं है।

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