Por favor, explique a diferença entre $routeProvider
e $stateProvider
no AngularJS.
Qual é a melhor prática?
Por favor, explique a diferença entre $routeProvider
e $stateProvider
no AngularJS.
Qual é a melhor prática?
Ambos fazem o mesmo trabalho que são usados para propósitos de roteamento no SPA (aplicativo de página única).
URLs para controladores e visualizações (parciais HTML). Ele observa $ location.url () e tenta mapear o caminho para uma definição de rota existente.
HTML
<div ng-view></div>
A tag acima renderizará o modelo a partir da $routeProvider.when()
condição mencionada em .config
(fase de configuração) do angular
Limitações: -
ng-view
página$routeProvider
falhará. (para isso, precisamos usar directivas como ng-include
, ng-switch
, ng-if
, ng-show
, o que parece ruim tê-los em SPA)O AngularUI Router é uma estrutura de roteamento para o AngularJS, que permite organizar as partes da sua interface em uma máquina de estado. O roteador de interface do usuário é organizado em torno de estados, que podem opcionalmente ter rotas e outros comportamentos anexados.
Vistas múltiplas e nomeadas
Outro ótimo recurso é a capacidade de ter várias visualizações de interface do usuário em um modelo.
Embora várias visualizações paralelas sejam um recurso poderoso, muitas vezes você poderá gerenciar suas interfaces com mais eficiência, aninhando seus view
s e emparelhando essas visualizações com estados aninhados.
HTML
<div ui-view>
<div ui-view='header'></div>
<div ui-view='content'></div>
<div ui-view='footer'></div>
</div>
A maioria do ui-router
poder é que ele pode gerenciar estados e visualizações aninhados.
Prós
ui-view
em uma única páginaui-view="some"
estado de apenas usando o roteamento absoluto usando @
com o nome do estado.@
para alterar ui-view="some"
. Isso substituirá o em ui-view
vez de verificar se está aninhado ou não.ui-sref
para criar uma href
URL dinamicamente com base URL
no mencionado em um estado, também pode fornecer parâmetros de estado no json
formato.Para mais informações: Ui-router angular
Para uma melhor flexibilidade com várias visualizações aninhadas com estados, eu prefiro que você escolha ui-router
$stateProvider
e$routeProvider
O ng-Router da Angular leva
URLs
em consideração durante o roteamento, o UI-Routerstates
além dos URLs.Enquanto estiver no ng-router, você deve ter muito cuidado com os URLs ao fornecer links via
<a href="">
tag, no UI-Router, você deve terstate
em mente apenas. Você fornece links como<a ui-sref="">
. Observe que, mesmo que você use o<a href="">
UI-Router, como faria no ng-router, ele ainda funcionará.Portanto, mesmo que você decida alterar seu URL algum dia,
state
ele permanecerá o mesmo e você precisará alterar o URL apenas em.config
.Enquanto o ngRouter pode ser usado para criar aplicativos simples, o UI-Router facilita muito o desenvolvimento de aplicativos complexos. Aqui está o seu wiki.
fonte
$ route: é usado para URLs de links diretos para controladores e visualizações (parciais HTML) e observa $ location.url () para mapear o caminho a partir de uma definição existente de rota.
Quando usamos ngRoute, a rota é configurada com $ routeProvider e, quando usamos o ui-router, a rota é configurada com $ stateProvider e $ urlRouterProvider.
fonte