2014-04-22 11 views
9

Używam $ location.path() do załadowania nowego widoku wewnątrz mojej kanciastej witryny internetowej. Moja strona wygląda tak:Wstępne ładowanie ng-view dla płynniejszej nawigacji

<html> 
<head> 
</head> 
<body> 
<div data-ng-view="" ></div> 
</body> 
</html> 

I zmienić NG-view w zależności od potrzeb (indeks, w domu, login, itp). Czasami nawigacja wydaje się powolna (jakaś usterka pozostaje na stronie podczas 0,1 s) czy istnieje sposób na natychmiastową nawigację?

Próbowałem też animacji ng, która poprawiła to uczucie, ale nie do końca. Chyba że wstępne ładowanie moje „poglądy” będzie jednym rozwiązaniem ..

Edit:

Uczucie ulepszony przez dodanie:

myApp.run(function ($templateCache, $http) { 
     $http.get('Template1.html', { cache: $templateCache }); 
    }); 

Odpowiedz

5

Można użyć znacznie lepszą bibliotekę do zarządzania takie stany i widoki jako Angular UI Router.

Posiada obsługę wstępnego ładowania każdego zasobu, który jest potrzebny w stanie zagnieżdżonym przed jego renderowaniem (poprzez właściwość resolve), aby uniknąć migotania interfejsu, ale można również załadować każdy zasób, który chcesz indywidualnie po wyrenderowałeś swój widok. Jeśli nie chcesz, aby Twoja aplikacja była używana do korzystania z routery-ui (co imo sprawia, że ​​każda aplikacja jest znacznie łatwiejsza w zarządzaniu), utknąłbyś z użyciem $ templateCache i ręcznego zarządzania zasobami swoich widoków.

Sztuczka, którą możesz spróbować, to sprawić, że kontroler widoku załaduje zasoby, które potrzebuje po wykonaniu renderowania. Być może masz powtarzające się części widoku aplikacji mądry, spróbuj wyodrębnić je w osobnych szablonach i ponownie użyć, jeśli możesz. Jeśli możesz podzielić aplikację w taki sposób, że nie będzie renderować ponownie za każdym razem, gdy zmienisz widok, prawdopodobnie będzie to miało korzystny wpływ na prędkość renderowania.

+0

Znalazłem informacje na ten temat ([link] (http://stackoverflow.com/questions/21023763/difference-between-angular-route-and-angular-ui-router)) . Ale nie wiadomo, czy kątowy router ui jest szybszy niż ngRoute – BironDavid

+0

Jest bardziej konfigurowalny i ma lepsze ogólne możliwości (wszystko jest łatwiejsze i łatwiejsze w zarządzaniu). Niekoniecznie jest to szybsze, ale łatwiejsze w zarządzaniu i generalnie skutkuje lepiej skonstruowanym kodem. A w lepiej skonstruowanym kodzie łatwiej jest zlokalizować problemy z renderowaniem. Jednak nie jest to magiczna kula, która automatycznie przyspieszy twoją aplikację. To tylko trochę lepsza alternatywa dla ngRoute. –

Powiązane problemy