मैंने पिछले परियोजना में बेबेल के साथ es2015 का उपयोग शुरू किया। जब मैं if
स्थिति के अंदर import
या export
करने का प्रयास करता हूं, तो मुझे 'import' and 'export' may only appear at the top level
त्रुटि होती है। मुझे इसके लिए बहुत सारे मामले दिखाई देते हैं और यह require
के साथ अच्छा काम करता है, लेकिन es2015 मॉड्यूल के साथ नहीं। क्या इस सीमा के लिए कोई कारण है?es2015 में निर्यात/आयात घोषणा शीर्ष स्तर पर क्यों होनी चाहिए?
उत्तर
जावास्क्रिप्ट ईएस 6 मॉड्यूल पर स्थिर विश्लेषण करता है। इसका मतलब है कि आप गतिशील रूप से आयात या निर्यात नहीं कर सकते हैं। Read section 4.2 of this article for more information:
एक मॉड्यूल की संरचना स्थिर का मतलब है कि आप संकलन समय (स्थिर) पर आयात और निर्यात निर्धारित कर सकते हैं किया जा रहा है - आप केवल स्रोत कोड को देखने के लिए है, तो आप इसे निष्पादित करने के लिए नहीं है।
वहाँ स्थिर, analysable अर्थात् मैक्रो और प्रकार (में चर्चा होने की जिनमें से कुछ भविष्य सुविधाओं है कि एक स्रोत फ़ाइल के लिए की क्षमता पर भरोसा करते हैं के लिए जावास्क्रिप्ट तैयार करने के लिए कर रहे हैं इस दृष्टिकोण के लिए कई कारण हैं, उपरोक्त आलेख)।
एक और दिलचस्प article on this topicचक्रीय निर्भरता और तेजी से लुकअप कारण के रूप में उल्लेख है।
______
आप एक मॉड्यूल में से कुछ नेस्टेड ब्लॉक के भीतर एक export
प्रदर्शन करने के लिए चाहते हैं, पर फिर से विचार कैसे आप मॉड्यूल लेखन और अपने APIs/आंतरिक उजागर के रूप में यह लगभग निश्चित रूप से आवश्यक नहीं है कर रहे हैं। वही है यदि आप वर्तमान में require
आईएन 5 कोड में नेस्टेड ब्लॉक के भीतर मॉड्यूल हैं। अपने मॉड्यूल के शीर्ष पर require
/import
क्यों नहीं और ने अपने एपीआई/इंटर्नल्स को नेस्टेड ब्लॉक के भीतर उपभोग किया है? कम से कम एक पठनीयता दृष्टिकोण से, इस दृष्टिकोण का मुख्य लाभ यह है कि आप require
कॉल के लिए अपने स्रोत को स्कैन किए बिना मॉड्यूल की निर्भरताओं को जान सकते हैं।
केवल इतना ही नहीं, लेकिन मॉड्यूल निर्भरताओं के बाद वे अवधारणात्मक रूप से फंसे हुए हैं आपके किसी भी कोड को निष्पादित करने से पहले पूरी तरह से संसाधित किया जाता है, और 'if' में आयात करने की अवधारणा को निष्पादन की आवश्यकता होगी। – loganfsmyth
@loganfsmyth यह डालने का एक और अधिक संक्षिप्त तरीका है :-) – sdgluck
- 1. सामग्री नियंत्रण शीर्ष-स्तर नियंत्रण होना चाहिए
- 2. जीसीसी संकलन त्रुटि: 'strlen' की घोषणा उपलब्ध होनी चाहिए
- 3. कक्षा प्रारंभिक विधि क्यों स्थिर होनी चाहिए?
- 4. अपेक्षित; शीर्ष स्तर declarator, xcode
- 5. टीसीपीडीएफ छवि की तुलना में छोटी क्यों होनी चाहिए?
- 6. डब्ल्यूपीएफ - वैश्विक स्तर पर एक्सएएमएल नेमस्पेस घोषणा
- 7. कक्षा में लागू सी # इंटरफेस विधि क्यों सार्वजनिक होनी चाहिए?
- 8. शीर्ष स्तर जावास्क्रिप्ट आयात - Redux
- 9. gtk.window हमेशा शीर्ष स्तर
- 10. शीर्ष स्तर पृष्ठ पर नच + सोलर केवल
- 11. जावा element.getElementsByTagName शीर्ष पर सीमित करें स्तर
- 12. क्या अपवाद केस कक्षाएं होनी चाहिए?
- 13. ES2015 फ़ंक्शन के अंदर निर्यात
- 14. सेवा परत कक्षाएं सिंगलेट्स होनी चाहिए?
- 15. कैसे जबकि शीर्ष स्तर फिल्टर में
- 16. एक .NET संरचना 16 बाइट से कम क्यों होनी चाहिए?
- 17. रिंग बफर आकार 2 की शक्ति क्यों होनी चाहिए?
- 18. स्कैला शीर्ष स्तर पैकेज ऑब्जेक्ट
- 19. क्या वेबसाइट भी वेब संसाधन होनी चाहिए?
- 20. ViewModel सदस्यों की दृश्यता क्या होनी चाहिए?
- 21. है .gitignore शीर्ष स्तर निर्देशिका
- 22. घोषणा के अंत में वैकल्पिक पैरामीटर क्यों दिखना चाहिए
- 23. मैं स्विफ्ट में यह त्रुटि प्राप्त कर रहा हूं। "एक लाइन पर अभिसरण घोषणा अलग होनी चाहिए ';'
- 24. इवेंटमैचिन सर्वर पर शीर्ष स्तर की विफलताओं को कैसे पकड़ें?
- 25. क्या .net टिप्पणियां पूंजी पत्र से शुरू होनी चाहिए और अवधि के साथ समाप्त होनी चाहिए?
- 26. क्या कार्य घोषणा सशर्त बयान के भीतर प्रकट नहीं होनी चाहिए?
- 27. ES2015 मॉड्यूल
- 28. क्या उपयोगकर्ता नामों में यूनिकोड की अनुमति होनी चाहिए?
- 29. जावास्क्रिप्ट ES2015
- 30. ES2015/es6
क्योंकि es2015 मॉड्यूल सिंक्रनाइज़ रूप से लोड हो सकते हैं? नेस्टेड 'निर्यात की अनुमति देने का मतलब यह होगा कि निर्यात को तब तक स्थगित कर दिया जा सकता है जब तक उस लाइन को – CodingIntrigue
बेबेल-एस्लिंट कहा जाता है। https://stackoverflow.com/questions/39158552/ignore-eslint-error-import-and-export-may-only-appear-at-the-top-level –