Mam modelu, które muszą być dostępne dla kilku widokach i do osiągnięcia tego celu w definicji modułu modelu mam instancji go natychmiast tak:Modele szkieletu Singleton z RequireJS: anti-pattern?
define([
'jquery',
'underscore',
'backbone'
], function(_, Backbone) {
var Foo = Backbone.Model.extend({
// wondrous methods and properties
});
return new Foo();
});
ja naprawdę potrzebuję tylko jedno wystąpienie tego modelu - właśnie teraz. Rozwiązaniem tego problemu jest, o ile wiem, oddzielny moduł App
. Coś jak:
define([], function() {
var App = {
routers: {},
models: {},
views: {}
};
return App;
});
, na którym można przechowywać instancji i odwołań do obiektów na starcie aplikacji:
require([
'App',
'Foo'
], function(App, Foo) {
App.models.foo = new Foo();
});
ale czuję, że jest to słaba alternatywa ponieważ jesteś zasadniczo wraca do posiadające globalna przestrzeń nazw - coś, co ma pomóc RequireJS.
Czy są jakieś alternatywy i czy istnieje jakiś dobry powód, aby unikać modeli singletonowych, tak jak opisałem powyżej?
Powinieneś być całkowicie w porządku, tak jak zrobiłeś to w swoim pierwszym przykładzie. –