क्या मुझे अपने जेएस मॉड्यूल पर थोड़ा सलाह मिल सकती है? मैं जेएस के साथ अच्छा हूं, लेकिन काफी गुरु की स्थिति नहीं :) क्या मैं अपने मॉड्यूल को सही तरीके से दोबारा कर रहा हूं?जावास्क्रिप्ट मॉड्यूल बनाने के लिए बेहतर तरीका?
मैं इस तरह js मॉड्यूल पद्धति का उपयोग कर रहा है (किसी न किसी उदाहरण के लिए, मैं सिर्फ संरचना के बारे में चिंतित हूँ):
खराब तरीका है?
/* Module Code */
var MapModule = (function ($) {
var $_address;
var $_mapContainer;
function loadApi() {
// do something. maybe load an API?
}
function someInternalMethod() {
// do other things
}
var pub = {};
pub.setAddress = function (address) {
$_address = address;
};
pub.getAddress = function() {
return $_address;
};
pub.initialize = function() {
loadApi();
}
})(jQuery);
// usage
MapModule.initialize();
लेकिन यह उपयोग थोड़ा सा मैला लगता है। मुझे रचनाकार पसंद है।
बेहतर तरीका:
मैं इस तरह कुछ मॉड्यूल पुनर्संशोधित?
(function ($) {
this.MapModule = function() {
var $_address;
var $_mapSelector;
var $_mapContainer;
function loadApi() {
// do something. maybe load an API?
}
function someInternalMethod() {
$_mapContainer = $($_mapSelector);
// do stuff with the jQ object.
}
var pub = {};
pub.setAddress = function (address) {
$_address = address;
};
pub.getAddress = function() {
return $_address;
};
pub.initialize = function (selector) {
$_mapSelector = selector;
loadApi();
}
}
})(jQuery);
var map = new MapModule();
map.initialize('#mapcontainer');
उपयोग एक बहुत मेरे लिए क्लीनर लगता है यही कारण है, और यह सिर्फ ठीक काम करता है, लेकिन मैं इसके बारे में ठीक से जा रहा हूँ? एक jQ प्लगइन में तब्दील हो कि पर कोई सुझाव दिए गए तो मैं यह var map = $('mapcontainer').mapModule();
की तरह एक हस्ताक्षर के साथ उपयोग कर सकते हैं:
यह एक और कदम
ले रहा है इस मॉड्यूल एक div कि गूगल मैप्स और jQuery कार्यक्षमता लपेटता के साथ कुछ सामान करता कहो
धन्यवाद!
यह सवाल भारी आधारित किया जा रहा है राय पर, और मैं इसे इस तरह बंद करने के लिए मतदान कर रहा हूं। इसके साथ ही, एएमडी और कॉमनजेएस मॉड्यूल पैटर्न देखें (यूएमडी अच्छा है यदि आपके पास निर्भरता नहीं है) और आवश्यकताएं या ब्राउज़र को आज़माएं, तो वे वास्तव में आपके कोड को मॉड्यूलर करने में मदद करेंगे। – zzzzBov
धन्यवाद, @zzzzBov। हां, यह काफी हद तक राय है, इस अर्थ में कि विभिन्न डेवलपर्स के पास अलग-अलग कोड शैलियों और वरीयताएं होंगी। मुझे लगता है कि मैं उस सीमा में तीन अलग-अलग बिंदुओं को देख रहा हूं; विशेष रूप से, ** तीनों में से ** चल रहा है। मेरे google-fu के अतिरिक्त कीवर्ड के लिए धन्यवाद :) बहुत सराहना की! –
@zzzzBov, अगर मैं एक विकल्प था तो मैं उस टिप्पणी को जवाब के रूप में स्वीकार करूंगा :) –