2015-04-15 11 views
8

Badam różnicę między aplikacjami na jednej stronie i aplikacjami wielostronicowymi. Myślę, że dobrze rozumiem, jak się różnią. Aplikacja na pojedynczą stronę zaczyna się od załadowania pojedynczej strony HTML, a następnie już nigdy nie odświeża w pełni strony ani nie zastępuje oryginału, chyba że aplikacja jest inaczej odświeżana (odświeżanie przeglądarki itp.). Na przykład projekt nasienia angularJS: angular-seed ma indeks plik .html. Ten plik jest pojedynczą stroną, którą serwer wysłałby na front-end, a następnie wszystkie inne (możliwe) strony będą wysyłane asynchronicznie pod maską przy użyciu AJAX. Więc jeśli tworzysz aplikację tylko z seedem angularjs, to zawsze będzie to aplikacja SPA, czyż nie?AngularJS: różnica między aplikacjami i wielostronicowymi aplikacjami w praktyce?

Jak w praktyce można następnie utworzyć wielostronicową aplikację z angularjs? Czy nie potrzebujesz wtedy wielu aplikacji angularJS? Czy musiałbyś mieć oddzielne trasy dla każdej z aplikacji angularJS? I dlaczego chciałbyś zrobić wielostronicową aplikację dla angularJS? Ponieważ zawsze można użyć pierwszego pliku index.html jako powłoki, bez prawdziwej zawartości, a następnie mieć oddzielne strony kontenera dla różnych stron. Czy można powiedzieć, że aplikacja wielostronicowa angularJS byłaby aplikacją, która zawierałaby tylko wiele aplikacji SPA angularJS? Czy w SPA możesz użyć przycisku wstecz przeglądarki, aby powrócić do ostatniego widoku?

Odpowiedz

1

Tak, masz pomysł na SPA i MPA.

Angular.js umożliwia tworzenie SPA, ale nie wymusza. W MPA nie mówiłbym o wielu aplikacjach Angular, ponieważ właśnie rozpowszechniłbyś moduły Angular.js na wielu stronach HTML. Logika przepływu stron lub routingu byłaby wówczas w kontrolerach Angular.js, w zwykłych hiperlinkach lub w zapleczu na serwerze.

Może być powód, aby nie umieszczać całej aplikacji pod Angular.js. Może część uwierzytelniania aplikacji internetowej może być trzymana osobno z pewnych powodów ...

W SPA można zdecydowanie użyć przycisku wstecz przeglądarki. Musisz to jakoś zaimplementować. Twitter rozwiązuje ten problem, kodując stan swojej aplikacji internetowej w adresie URL - jeśli używasz Twittera, możesz zauważyć symbole (#!) Na pasku adresu.

+0

Ale czy nie potrzebujesz ng-app w html, aby skompilować dokument angularjs? Więc nie możesz mieć modułów angular.js na innych stronach html, bez tych stron, które zawierają również moduł ng-app? A jeśli zawierają moduł ng-app, są one traktowane jako osobna aplikacja? https://docs.angularjs.org/api/ng/directive/ngApp. Również nie rozumiem części routingu. Czy nie byłoby wtedy normalnego prostowania kątowego? –

+1

Tak, musisz zainicjować Angular.js w jakiś sposób na stronie - zobacz także https://docs.angularjs.org/guide/bootstrap - ale to samo nie tworzy dwóch aplikacji. –

+0

Kiedy mówisz "aplikacja", mówisz o aplikacjach Angular.js, prawda? W takim przypadku możesz udostępnić jedną aplikację Angular.js na wielu stronach (musisz przenieść dane z jednej strony na drugą ...). Ponadto możesz mieć wiele aplikacji Angular.js na jednej stronie. Lub możesz mieć aplikację internetową składającą się z jednej strony z aplikacją Angular.js i inną zwykłą stroną HTML ... –