2013-03-27 17 views
8

Przyjrzałem się wielu przykładom w Internecie, jak zacząć opracowywać aplikacje BB za pomocą requireJS, ale jestem w pewnym sensie zagubiony.Wiązanie szkieletu i ładowanie wymuszone JS

Myślę, że AMD ma cel, aby ładować pliki tylko wtedy, gdy naprawdę tego potrzebowały. Niedługo.

Dlaczego widzę przykłady tylko wtedy, gdy programista umieścił prawie wszystkie pliki jako zależność na początku swojego głównego pliku?

Oto przykład: https://github.com/jcreamer898/RequireJS-Backbone-Starter/tree/master/js

Ta aplikacja błyskawicznie ładuje main.js która zależy app.js który ładuje routery/home.js co wymaga views/view.js który ładuje szablon i modele widoku za/model.js, który ... i koniec.

Nie mogę zobaczyć, jak rozszerzyć tę aplikację, na przykład o więcej widoków, w których zależności widoku (jego modele, szablony, kolekcje, zewnętrzne interfejsy API itp.) Są ładowane tylko wtedy, gdy router wywołuje je i inicjalizuje. Innym sposobem byłoby nieuzasadnione korzystanie z AMD, gdzie ładujesz wszystkie pliki podczas inicjowania aplikacji.

Podobny przykład tutaj: http://backbonetutorials.com/organizing-backbone-using-modules/ zobaczyć router.js file.Actually To views/Projekty/Lista "Ładunki i„views/użytkowników/listy”Zależności podczas gdy router nie wie jeszcze, czy użytkownik będzie musiał je przyszłość, czy nie.

Poinformuj, dziękuję z góry!

Odpowiedz

6

To trochę trudno zobaczyć w takiej małej aplikacji próbki, bo trzeba załadować coś na początkowym trasy, a ładowanie coś w Backbone zwykle oznacza model, do kolekcji, a widok. Ponieważ próbka, którą połączyłeś, ma tylko jedną z nich, to tak, ładujesz prawie wszystko.

Tam, gdzie zaczynasz widzieć funkcję "na żądanie", dodajesz dodatkowe trasy/widoki/modele/itd. Należy jednak pamiętać, że ładowanie na żądanie jest prawdopodobnie drugorzędnym celem AMD/RequireJS. Głównym celem jest modularity. Następnie oferuje wiele opcji ładowania elementów na żądanie lub łączenia wszystkich elementów za pomocą the optimizer

Również nie ma niczego, co mówi, że musisz umieścić wszystkie wymagania() na początku pliku. Możesz zrobić je później (np. Podczas inicjowania trasy). Oto zmodyfikowana wersja pliku home.js z pierwszego połączonego przykładu. Jeśli korzystasz z narzędzi do projektowania Chrome, możesz spojrzeć na kartę sieci, gdy "debugger;" instrukcja pauzuje wykonanie. Następnie kontynuuj wykonywanie i zobacz, jak reszta skryptów zostanie załadowana.

define([ 
    'jquery', 
    'backbone', 
    'underscore' 
    ], 
function($, Backbone, _){ 
    var Router = Backbone.Router.extend({ 
     initialize: function(){ 
      Backbone.history.start(); 
     }, 
     routes: { 
      '': 'home' 
     }, 
     'home': function(){ 
      debugger; 
      require(['views/view'], function (mainView) { 
       mainView.render(); 
      }); 
     } 
    }); 

    return Router; 
}); 

Zobacz więcej informacji na temat this person's article, a następnie przejdź dalej.

+0

Dodałem kolejny przykład, w którym jest więcej widoków, a logika aplikacji wciąż nie ma tego punktu na żądanie. – zsitro

+0

Dzięki! Twój przykład i artykuł bardzo mi pomogły. – zsitro

+0

Idealny. Na każdą trasę ładowałem mnóstwo plików. Teraz wszystko idzie naprzód! Dzięki! – matthoiland