2012-09-21 17 views
8

मैं एक मॉडल कई देखा गया और मॉडल मॉड्यूल की परिभाषा में यह पूरा करने पहुँचा जा करने की जरूरत है कि मैं इसे तुरंत instantiating कर रहा हूँ तो जैसे:RequJS के साथ सिंगलटन बैकबोन मॉडल: विरोधी पैटर्न?

define([ 
    'jquery', 
    'underscore', 
    'backbone' 
], function(_, Backbone) { 
    var Foo = Backbone.Model.extend({ 
     // wondrous methods and properties 
    }); 

    return new Foo(); 
}); 

मैं केवल वास्तव में इस मॉडल का एक उदाहरण की जरूरत है - अभी यह है। जहां तक ​​मुझे पता है कि इसके लिए वर्कअराउंड अलग App मॉड्यूल होना है। कुछ की तरह:

define([], function() { 
    var App = { 
     routers: {}, 
     models: {}, 
     views: {} 
    }; 

    return App; 
}); 

जिस पर आप एप्लिकेशन स्टार्टअप पर वस्तुओं के लिए दुकान संदर्भ का दृष्टांत और कर सकते हैं:

require([ 
    'App', 
    'Foo' 
], function(App, Foo) { 
    App.models.foo = new Foo(); 
}); 

लेकिन मैं इस तरह लग रहा है एक गरीब विकल्प के बाद से आप अनिवार्य रूप से एक होने के लिए वापस जा रहे हैं वैश्विक नामस्थान - जो कुछ है जो RequJS से बचने में मदद करने के लिए माना जाता है।

क्या कोई विकल्प हैं और क्या ऊपर वर्णित सिंगलटन मॉडल होने से बचने का कोई अच्छा कारण है?

+0

आपको अपने पहले उदाहरण में ऐसा करने के तरीके से पूरी तरह से ठीक होना चाहिए। –

उत्तर

5

हम्म .. मैं कुछ समय के लिए सिंगलटन ऑब्जेक्ट्स के रूप में RequJS मॉड्यूल का उपयोग कर रहा हूं। यहां एक संबंधित प्रश्न है जिसे मैंने पूछा था।

Is it a bad practice to use the requireJS module as a singleton?

आशा इस मदद करता है!

3

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

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

  • कोई संबंधित समस्या नहीं^_^