require.js + backbone.js: Jak ustrukturyzować moduły, które mają funkcję inicjalizacji?

Mam aplikację z trzema stronami (które są interfejsami jednostronicowymi). Strony mają podobną, ale nie identyczną funkcjonalność.

Chcę więc mieć moduły javascript, które zapewniają wspólną funkcjonalność. Następnie każda strona może dostosować / nadpisać części wspólnej funkcjonalności.

Używam backbone.js, więc to co robię to:

załaduj pliki zawierające wspólne Modele, Widoki, Kolekcje itp.załaduj pliki specyficzne dla aplikacji, które dostosowują / zastępują części kroku 1wywołanie funkcji init (), która uruchamia wszystkie niezbędne modele / widoki / kolekcje

W tej chwili przechowuję moje moduły w kontenerze modułowym podobnym do tego:https://stackoverflow.com/a/9426071 Każdy moduł ma opcjonalną funkcję init (), która jest wykonywana przez moją główną funkcję init ().

Przykład:

Mam plik o nazwie results.js. Definiuje wspólny model / kolekcję / widok wyników wyszukiwania. W swojej funkcji init () wszystko jest instancjonowane, ale ta funkcja nie jest jeszcze wywoływana:

var resultView = new ResultView()

Następnie dołączam myApp.js, a części widoku są zastępowane.

Główna funkcja init () wywołuje init.js results.js, który uruchamia nowy widok. Wszystko działa dobrze, gładko i DRY.

Teraz chcę przełączyć się na require.js zamiast na mój własny moduł-kontener i zastanawiać się, jak zorganizować mój kod.

Mogłem albo zainicjować wszystkie modele / widoki itp. W myApp.js zamiast funkcji init () każdego modułu. Oznaczałoby to posiadanie wielu powtarzalnych kodów.

Albo mogę trzymać się każdego modułu mającego funkcję init () i wywoływać te funkcje init () w myApp.js. Nie podoba mi się to, ponieważ musiałbym wyraźnie zapisać moje moduły trzy razy dla każdej z moich trzech stron:

require(['module1', 'module2', 'module3', ...],
  function(module1, module2, module3, ...) {
    var init = function() {
      module1.init();
      module2.init();
      module3.init();
      ...
    }
    return {init: init};
  }
);

Dla 10 modułów i pewnej liczby bibliotek nie jest to przyjemne i DRY. Czy istnieje jakikolwiek sposób na uzyskanie dostępu do wszystkich modułów, które przechowuje require.js?

Czy czegoś mi brakuje, czy powinienem ustrukturyzować mój kod w inny sposób?

Wszelkie wskazówki / myśli są mile widziane,

Michael

questionAnswers(1)

yourAnswerToTheQuestion