आवश्यकताएं AMD एपीआई (स्रोत) को लागू करती हैं ।
कॉमनजस एक की मदद से मॉड्यूल को परिभाषित करने का एक तरीका हैexports
वस्तु , जो मॉड्यूल सामग्री को परिभाषित करता है। सीधे शब्दों में कहें, एक कॉमन जेजेएस कार्यान्वयन इस तरह काम कर सकता है:
// someModule.js
exports.doSomething = function() { return "foo"; };
//otherModule.js
var someModule = require('someModule'); // in the vein of node
exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };
मूल रूप से, कॉमनजेएस निर्दिष्ट करता है कि आपको require()
निर्भरता लाने के लिए एक फ़ंक्शन होना चाहिए, exports
मॉड्यूल सामग्री निर्यात करने के लिए एक चर और एक मॉड्यूल पहचानकर्ता (जो इस मॉड्यूल के संबंध में प्रश्न में मॉड्यूल के स्थान का वर्णन करता है) जो निर्भरता की आवश्यकता के लिए उपयोग किया जाता है ( स्रोत )। CommonJS में विभिन्न कार्यान्वयन हैं, जिनमें Node.js शामिल हैं , जिनका आपने उल्लेख किया है।
कॉमनजेएस को विशेष रूप से ब्राउज़र को ध्यान में रखते हुए डिज़ाइन नहीं किया गया था, इसलिए यह ब्राउज़र के वातावरण में बहुत अच्छी तरह से फिट नहीं होता है ( मेरे पास वास्तव में इसके लिए कोई स्रोत नहीं है - यह सिर्फ हर जगह ऐसा कहता है, जिसमें आवश्यकताएं भी शामिल हैं । ) जाहिर है, इसमें कुछ है। अतुल्यकालिक लोडिंग के साथ करते हैं, आदि।
दूसरी ओर, आवश्यकताएँ जेएमडी एएमपी को लागू करता है, जिसे ब्राउज़र वातावरण ( स्रोत ) के अनुरूप बनाया गया है । जाहिरा तौर पर, एएमडी ने कॉमनजेएस ट्रांसपोर्ट प्रारूप के स्पिनऑफ के रूप में शुरू किया और अपने स्वयं के मॉड्यूल परिभाषा एपीआई में विकसित हुआ। इसलिए दोनों में समानता है। एएमडी में नई सुविधा define()
फ़ंक्शन है जो लोड होने से पहले मॉड्यूल को अपनी निर्भरता घोषित करने की अनुमति देता है। उदाहरण के लिए, परिभाषा यह हो सकती है:
define('module/id/string', ['module', 'dependency', 'array'],
function(module, factory function) {
return ModuleContents;
});
तो, CommonJS और AMD हैं जावास्क्रिप्ट मॉड्यूल परिभाषा एपीआई हैं जिनके अलग-अलग कार्यान्वयन हैं, लेकिन दोनों एक ही मूल से आते हैं।
- एएमडी ब्राउज़र के लिए अधिक अनुकूल है, क्योंकि यह मॉड्यूल निर्भरता के अतुल्यकालिक लोडिंग का समर्थन करता है।
- RequireJS के एक कार्यान्वयन है एएमडी जबकि एक ही समय की भावना रखने की कोशिश कर, CommonJS (मुख्य रूप से मॉड्यूल पहचानकर्ता में)।
आपको और भी अधिक भ्रमित करने के लिए, एएमजे के कार्यान्वयन के दौरान, एनईआरजेएस, एक कॉमनजेएस आवरण प्रदान करता है, इसलिए कॉमनजेएस मॉड्यूल को लगभग सीधे जेईजेजेएस के साथ उपयोग के लिए आयात किया जा सकता है।
define(function(require, exports, module) {
var someModule = require('someModule'); // in the vein of node
exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };
});
मुझे आशा है कि यह चीजों को स्पष्ट करने में मदद करता है!