Bitte erläutern Sie den Unterschied zwischen $routeProvider
und $stateProvider
in AngularJS.
Welches ist die beste Vorgehensweise?
Bitte erläutern Sie den Unterschied zwischen $routeProvider
und $stateProvider
in AngularJS.
Welches ist die beste Vorgehensweise?
Beide erledigen die gleiche Arbeit, wie sie für Routingzwecke in SPA (Single Page Application) verwendet werden.
URLs zu Controllern und Ansichten (HTML-Partials). Es überwacht $ location.url () und versucht, den Pfad einer vorhandenen Routendefinition zuzuordnen.
HTML
<div ng-view></div>
Das obige Tag rendert die Vorlage aus dem $routeProvider.when()
Zustand, den Sie in .config
(Konfigurationsphase) von eckig erwähnt haben
Einschränkungen:-
ng-view
Seiten enthalten$routeProvider
schlägt dies fehl. (erreichen , dass müssen wir Richtlinien verwenden , wie ng-include
, ng-switch
, ng-if
, ng-show
, das sieht schlecht aus sie in SPA haben)AngularUI Router ist ein Routing-Framework für AngularJS, mit dem Sie die Teile Ihrer Schnittstelle in einer Zustandsmaschine organisieren können. UI-Router ist nach Zuständen organisiert, an die optional Routen sowie anderes Verhalten angehängt werden können.
Mehrere und benannte Ansichten
Ein weiteres großartiges Feature ist die Möglichkeit, mehrere UI-Ansichten in einer Vorlage zu haben.
Während mehrere parallele Ansichten eine leistungsstarke Funktion sind, können Sie Ihre Schnittstellen häufig effektiver verwalten, indem Sie Ihre view
s verschachteln und diese Ansichten mit verschachtelten Status koppeln.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
Der Großteil der ui-router
Leistung besteht darin, verschachtelte Status und Ansichten zu verwalten.
Vorteile
ui-view
auf einer Seite habenui-view="some"
Status ändern, indem Sie das absolute Routing mit dem Statusnamen verwenden @
.@
Änderungen vorzunehmen ui-view="some"
. Dies ersetzt das, ui-view
anstatt zu prüfen, ob es verschachtelt ist oder nicht.ui-sref
eine href
URL dynamisch auf der Grundlage der URL
in einem Status genannten erstellen. Außerdem können Sie Statusparameter im json
Format angeben .Weitere Informationen Angular UI-Router
Für eine bessere Flexibilität mit verschiedenen verschachtelten Ansichten mit Status würde ich es vorziehen, wenn Sie sich dafür entscheiden ui-router
$stateProvider
&$routeProvider
Angulars eigener ng-Router
URLs
berücksichtigt beim Routing, UI-Routerstates
zusätzlich zu URLs.Während Sie in ng-router sehr vorsichtig mit URLs umgehen müssen, wenn Sie Links über
<a href="">
Tags bereitstellen , müssen Sie in UI-Router nurstate
berücksichtigen. Sie bieten Links wie<a ui-sref="">
. Beachten Sie, dass es auch dann<a href="">
funktioniert , wenn Sie es in UI-Router verwenden, genau wie Sie es in ng-router tun würden.Selbst wenn Sie sich eines Tages dazu entschließen, Ihre URL zu ändern,
state
bleibt Ihre URL unverändert und Sie müssen die URL nur um ändern.config
.Während mit ngRouter einfache Apps erstellt werden können, erleichtert UI-Router die Entwicklung komplexer Apps erheblich. Hier ist sein Wiki.
quelle
$ route: Dies wird zum Deep-Linking von URLs mit Controllern und Ansichten (HTML-Partials) verwendet und überwacht $ location.url (), um den Pfad von einer vorhandenen Routendefinition abzubilden.
Wenn wir ngRoute verwenden, wird die Route mit $ routeProvider konfiguriert, und wenn wir ui-router verwenden, wird die Route mit $ stateProvider und $ urlRouterProvider konfiguriert.
quelle