2010-04-27 19 views
18

मुझे भविष्य की परियोजनाओं को व्यवस्थित करने के लिए मॉड्यूल पैटर्न का उपयोग करने में रूचि है। दुर्भाग्यवश, मॉड्यूल पैटर्न के केवल कुछ संक्षिप्त ट्यूटोरियल और सबूत-ऑफ-अवधारणा उदाहरण हैं।बड़ी परियोजनाओं के लिए मॉड्यूल पैटर्न का उपयोग

मॉड्यूल पैटर्न का उपयोग करना, मैं संरचना इस तरह की परियोजनाओं में व्यवस्थित करने के लिए करना चाहते हैं: एक उप-धारा या की शाखा

project.arm.object.method(); 

कहाँ "परियोजना" मेरे वैश्विक परियोजना का नाम है, "हाथ" है प्रोजेक्ट, "ऑब्जेक्ट" एक व्यक्तिगत वस्तु है, और इसलिए विधियों और गुणों पर।

हालांकि, मुझे यकीन नहीं है कि मुझे "प्रोजेक्ट" के तहत कई "हथियार" और "ऑब्जेक्ट्स" को घोषित और व्यवस्थित करना चाहिए।

var project = window.project || {}; 
project.arm = project.arm || {}; 

project.arm.object = (function() { 

    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 

}()); 

क्या जटिल मॉड्यूल संरचना को परिभाषित करते समय कोई सर्वोत्तम प्रथाएं या सम्मेलन हैं? क्या मुझे आखिरी के नीचे एक नई बांह/वस्तु घोषित करनी चाहिए?

उत्तर

20

यहां आप जो भी कर रहे हैं उस पर एक अच्छा लिखना है; http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth

+1

+1 महान लेख – Anurag

+8

दरअसल, यह केवल पर्याप्त रूप से अच्छा है। –

+2

यह सिर्फ सभ्य प्रोग्रामिंग सलाह है, और कुछ भी नहीं। एक अच्छा लिंक के लिए – Anurag

2

लोगों को ऐसा करने के लिए कितना बारीकियां हैं, लेकिन आप मॉड्यूल पैटर्न (नामित गुंजाइश) कह रहे हैं, इसका मुख्य लाभ यह है कि आप वैश्विक नामस्थान को अपनाना नहीं चाहते हैं, जो मदद करता है यदि आप अन्य पुस्तकालयों आदि लाते हैं, तो चीजों को साफ रखें, और नाम टकराव से बचाता है।

आप नामों और नेस्टेड स्कॉप्स को व्यवस्थित कैसे करते हैं, यह मुख्य रूप से व्यक्तिगत वरीयता का मामला है।

3

डोजो के dojo.declare यह

के बाद से बात इस तरह का के लिए अच्छा है एक निर्माता विरासत और प्रोटोटाइप विस्तार के लिए एक कॉम्पैक्ट अंकन का उपयोग बनाएँ।

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

var project = window.project || {}; 
project.arm = project.arm || {}; 

आप सिर्फ इतना है कि सुविधा चाहते हैं, तो आप dojo.setObject इस्तेमाल कर सकते हैं, लेकिन निश्चित रूप से, कुछ लिख करने के लिए वही छोटा है।

dojo.setObject("project.arm.object" (function() { 
    var privateVar = "Private contents."; 

    function privateMethod() { 
     alert(privateVar); 
    } 

    return { 
     method: privateMethod 
    }; 
}())); 

मैं हाल ही में dojo.declare/dojo.setObject (86 फ़ाइलें, 7K + लाइनें (टिप्पणियों और रिक्त लाइनों) की गिनती नहीं) का इस्तेमाल किया एक बड़ी जावास्क्रिप्ट परियोजना के लिए, और यह तुम हो, खासकर जब सब कुछ व्यवस्थित और प्रबंधन रखने के लिए, एक हवा था dojo.require और dojo.provide जैसे एक समावेश तंत्र।

संबंधित मुद्दे