RequJS और Node.js (सामान्य रूप से प्लस जावास्क्रिप्ट) की मेरी सीमित समझ के साथ, मैं आमतौर पर कुछ प्रसिद्ध जावास्क्रिप्ट पुस्तकालयों के स्रोत पर एक नज़र डालता हूं। जब भी मैं कुछ इस तरह देखें:यह जावास्क्रिप्ट कोड (RequJS और Node.js के लिए मॉड्यूल पैटर्न) क्यों काम करता है?
(// Wrapping
function (root, factory) {
if (typeof exports === 'object') { // Node.js
var underscore = require('underscore');
var backbone = require('backbone');
module.exports = factory(underscore, backbone);
} else if (typeof define === 'function' && define.amd) { // Require.JS
define(['underscore', 'backbone'], factory);
}
}(this, function (_, Backbone) { // Factory function, the implementation
"option strict";
function Foo() {}
return Foo; // Export the constructor
})
); // Wrapping
क्या मैं (उम्मीद) समझ सकते हैं:
- जब स्क्रिप्ट एक
<script>
टैग में uncluded है उस अज्ञात फ़ंक्शन कोड लपेटता स्वचालित रूप से क्रियान्वित किया जाता है - यह कोड RequJS और Node.js (
if
बहुत शुरुआत में चेक) दोनों के साथ काम करता है;factory
फ़ंक्शन का परिणाम या तोmodule.exports
(Node.js) को सौंपा गया है याdefine
फ़ंक्शन (RequJS) के तर्क के रूप में उपयोग किया जाता है।
Q1: कैसे इस कोड RequireJS और Node.js बिना काम करता है? if
और else if
चेक विफल हो जाएंगे, factory
फ़ंक्शन कभी निष्पादित नहीं होता है और स्क्रिप्ट वापस नहीं आती हैं।
क्यू 2: this
root
तर्क के रूप में पास करने का क्या उद्देश्य है? यह इस्तेमाल कभी नहीं किया है
क्या आप सुनिश्चित हैं कि यह RequJS या Node.js के बिना काम करता है? जावास्क्रिप्ट की मेरी सीमित समझ (और यह संभवतः गलत है) [JSFiddle] (http://jsfiddle.net/aM3ZT/) मुझे लगता है कि आप Foo() –
@nekman Ahh तक नहीं पहुंच सकते हैं, मुझे लगता है कि कम से कम बैकबोन उपलब्ध है । यह स्मार्ट –
@JasonSperske 100% पर निश्चित नहीं है, लेकिन नेक्कन उत्तर देखें ... – gremo