node.js - बोवर init-एमएमडी, es6, globals और नोड के बीच अंतर




ecmascript-6 bower (2)

मैं अपना पहला बोवर घटक बना रहा हूं। bower init चलाने के बाद स्क्रिप्ट मुझसे पूछता है 'इस पैकेज का किस प्रकार के मॉड्यूल का पर्दाफाश करता है?' इन विकल्पों के साथ:

  • एएमडी
  • ES6
  • वैश्विक
  • नोड

इन विकल्पों के बीच क्या अंतर है?


प्रारंभिक

मैं भी पहली बार bower init का उपयोग कर रहा हूँ।

विकल्पों को कुछ जावास्क्रिप्ट कोड मॉड्यूलर करने के विभिन्न तरीकों से संदर्भित होना चाहिए:

  • amd: एएमडी define तरह, requjs की तरह।
  • नोड: Node.js का उपयोग करने की require
  • ग्लोबल्स: वैश्विक चर (जैसे window.JQuery) का पर्दाफाश करने के लिए जावास्क्रिप्ट मॉड्यूल पैटर्न का उपयोग करना।
  • es6: आने वाली EcmaScript6 मॉड्यूल सुविधा का उपयोग कर।

मेरे मामले में मैंने एक Node.js मॉड्यूल dflow लिखा है, लेकिन मैं एक dist / dflow.js फ़ाइल बनाने के लिए dflow का उपयोग कर रहा हूं जो वैश्विक dflow var निर्यात करता है: इसलिए मैंने ग्लोबल्स का चयन किया।

अन्य अपडेट

एक विंडो वैश्विक वस्तु के रूप में dflow को dflow लिए उपयोग किया गया आदेश था

browserify -s dflow -e index.js -o dist/dflow.js

मैंने इसे बदल दिया क्योंकि मैं ब्राउज़र के अंदर भी आवश्यकता का उपयोग करना पसंद करता हूं, इसलिए अब मैं इसका उपयोग कर रहा हूं

browserify -r ./index.js:dflow -o dist/dflow.js

और इसलिए मैंने bower.moduleType को मेरी bower.json फ़ाइल में नोड करने के लिए बदल दिया।

मुख्य प्रेरणा यह थी कि यदि मेरे मॉड्यूल नाम में डैश है, उदाहरण के लिए मेरा प्रोजेक्ट flow-view , मुझे flow-view में वैश्विक नाम को कम करने की आवश्यकता है।

इस नए दृष्टिकोण के दो अन्य लाभ हैं:

  1. नोड और ब्राउज़र इंटरफ़ेस समान हैं। क्लाइंट साइड और सर्वर दोनों पक्षों की आवश्यकता का उपयोग करके, मुझे केवल कोड उदाहरणों को लिखने दें, और दोनों संदर्भों पर आसानी से उनका पुन: उपयोग करें।
  2. मैं एनपीएम स्क्रिप्ट का उपयोग करता हूं और इसलिए, मैं ${npm_package_name} वैरिएबल का लाभ उठा सकता हूं और एक बार लिपि लिखने के लिए उपयोग की जाने वाली स्क्रिप्ट लिख सकता हूं।

यह एक और विषय है, लेकिन, यह वास्तव में लायक है कि आप इस बात पर विचार करते हैं कि यह बाद का लाभ कैसे उपयोगी है: मुझे npm.scripts.browserify विशेषता साझा करें जो मैं अपने npm.scripts.browserify में उपयोग करता हूं

"browserify": "browserify -r ./index.js:${npm_package_name} -o dist/${npm_package_name}.js"


बस संदर्भ के लिए, यह वही है जो बॉवर मॉड्यूल प्रकारों के बारे में निर्दिष्ट करता है:

main जावास्क्रिप्ट फ़ाइल में परिभाषित मॉड्यूल का प्रकार। निम्नलिखित स्ट्रिंग्स में से एक या सरणी हो सकती है:

  • globals : जावास्क्रिप्ट मॉड्यूल जो वैश्विक नामस्थान में जोड़ता है, window.namespace या this.namespace वाक्यविन्यास का उपयोग कर
  • RequireJS : जावास्क्रिप्ट मॉड्यूल एएमडी के साथ संगत, जैसे RequireJS , define() वाक्यविन्यास का उपयोग कर
  • node : module.exports सिंटैक्स का उपयोग कर node और module.exports साथ संगत जावास्क्रिप्ट मॉड्यूल
  • es6 : जावास्क्रिप्ट मॉड्यूल export और import वाक्यविन्यास का उपयोग कर ECMAScript 6 मॉड्यूल के साथ संगत
  • YUI.add() वाक्यविन्यास का उपयोग कर, YUI.add() मॉड्यूल के साथ संगत जावास्क्रिप्ट मॉड्यूल

प्रासंगिक लिंक: https://github.com/bower/spec/blob/master/json.md#moduletype





es2015