2011-08-24 11 views
5

Bardzo intensywnie używamy ExtJS 3.x w naszej flagowej aplikacji. Obszar administracyjny naszej aplikacji jest podzielony na różne moduły, które oferujemy. Każdy moduł, a następnie każda strona dla różnych działań CRUD modułu ma własny plik .js do obsługi funkcji.Czy istnieje standardowy wzór dla ExtJS

Kiedy zaczynaliśmy, po prostu wyrzucaliśmy cały kod do Ext.onReady() i nie martwiliśmy się globalną przestrzenią nazw (hej ... nigdy tak naprawdę nie uważaliśmy się za programistów javascript). Po zawieszeniu ExtJS, przestawiłem się na użycie wzorca singleton i wywołanie metody init z Ext.onReady(), tak jak to.

var newModule = { 
    propertyOne: 'asfd', 
    propertyTwo: 'asdf', 
    init: function() { 
     // set up 
    } 
}; 

Ext.onReady(function() { 
    newModule.init(); 
}); 

Czy jest to prawidłowe stosowanie javascript Singleton i czy są jakieś wzory, które pasują lepiej niż ExtJS Singleton, jak mówią, a może Wzorzec modułu?

Używam this guide jako punktu wyjścia do nauki wzorców projektowych w JavaScript.

+0

Jeśli masz wystarczającą ilość zasobów, możesz dokonać aktualizacji do wersji extjs 4 i użyć ich potężnej aplikacji MVC do zaprojektowania aplikacji i nie martwić się obszarami nazw. –

+0

Niestety uaktualnienie na razie nie wchodzi w grę. Planujemy aktualizację, gdy tylko osiągniemy stabilną wersję naszego oprogramowania. Nie mogę się doczekać, aby użyć wzorca MVC i nowego systemu motywacyjnego Sass. –

+0

Pozostałe informacje na temat używania wzoru projektowego _a_ dla Ext JS 3.x można znaleźć tutaj: [Najlepsze praktyki w zakresie wzorców wzorców modularnych modułu JavaScript] (http://stackoverflow.com/q/9104387/320399) – blong

Odpowiedz

2

My ostatecznie postanowił uaktualnić do ExtJS i wydaje z nowej architektury MVC w miejscu najlepszego sposobu zaprojektowania oprogramowania ExtJS korzysta Ext.application()

Można o tym przeczytać here.

1

Możesz szukać here na przykład tworzenia własnych modułów, pliku Module.js. Zastosowaliśmy ten wzorzec do naszej własnej aplikacji i nie mieliśmy z tym problemu.

Ext.app.Module = function(config){ 
    Ext.apply(this, config); 
    Ext.app.Module.superclass.constructor.call(this); 
    this.init(); 
} 

Ext.extend(Ext.app.Module, Ext.util.Observable, { 
    init : Ext.emptyFn 
}); 
Powiązane problemy