本文實(shí)例講述了AngularJS通過(guò)ng-route實(shí)現(xiàn)基本的路由功能。分享給大家供大家參考,具體如下:
為什么需要前端路由~
(1)AJAX不會(huì)留下History歷史記錄
(2)用戶無(wú)法通過(guò)URL進(jìn)入應(yīng)用指定的頁(yè)面(書(shū)簽或者分享等)
(3)AJAX對(duì)于SEO是一個(gè)災(zāi)難
1.一般情況下,我們?cè)L問(wèn)網(wǎng)頁(yè)的時(shí)候,是通過(guò)url地址。
比如我們?cè)L問(wèn)一個(gè)網(wǎng)頁(yè):https://www.baidu.com/index/fix.html
在AngularJS中通過(guò)“#”來(lái)進(jìn)行不同頁(yè)面的路由,比如:
https://www.baidu.com/#/first,這個(gè)請(qǐng)求在向網(wǎng)頁(yè)端傳輸?shù)臅r(shí)候,服務(wù)器會(huì)自動(dòng)忽略#之后的內(nèi)容,因此可以根據(jù)#+標(biāo)記幫助我們區(qū)分不同的邏輯頁(yè)面并將不同的頁(yè)面綁定到對(duì)應(yīng)的控制器上。

這是一個(gè)簡(jiǎn)單的路由控制界面,根據(jù)鏈接中的#/first和#/second分別對(duì)應(yīng)跳轉(zhuǎn)到不同的頁(yè)面。
2.通過(guò)angularjs中的路由模塊,實(shí)現(xiàn)ng-route的步驟
(1)載入包含ng-route的JS文件
(2)包含了 ngRoute 模塊作為主應(yīng)用模塊的依賴(lài)模塊。
(3)使用原生指令ng-view
(4)我們?cè)趆tml中定義鏈接,可以實(shí)現(xiàn)一個(gè)單頁(yè)應(yīng)用,比如鏈接可以這樣定義:
<body> <ul> <li><a href="#/">首頁(yè)</a></li> <li><a href="#/first">第一頁(yè)面</a></li> <li><a href="#/second">第二頁(yè)面</a></li> <li><a href="#/third">第三頁(yè)面</a></li></ul> <div ng-view></div></body>
在js中的定義路由代碼為:
angular.module('myapp',['ngRoute']).config(['$routeProvider',function($routeProvider){ $routeProvider.when('/',{template:'這是首頁(yè)頁(yè)面'}) .when('/first',{template:'這是第一個(gè)頁(yè)面'}) .when('/second',{template:'這是第二個(gè)頁(yè)面'}) .when('/third',{template:'這是第三個(gè)頁(yè)面'}) .otherwise({redirectTo:'/'});}]);(6)我們來(lái)看效果,首次當(dāng)未有鏈接切換時(shí)候,默認(rèn)的跳轉(zhuǎn)到首頁(yè),效果如下:
當(dāng)依次點(diǎn)擊鏈接時(shí),會(huì)依次切換ng-view中的值,并且實(shí)現(xiàn)了ng-view內(nèi)內(nèi)容的替換~
I)初始效果

II)切換后的效果

我們發(fā)現(xiàn)改變的僅僅是#后的值,并沒(méi)有頁(yè)面的跳轉(zhuǎn)和刷新
3.angularJS中的路由設(shè)置對(duì)象
AngularJS 路由也可以通過(guò)不同的模板來(lái)實(shí)現(xiàn)。
$routeProvider.when 函數(shù)的第一個(gè)參數(shù)是 URL 或者 URL 正則規(guī)則,第二個(gè)參數(shù)為路由配置對(duì)象。
路由配置對(duì)象語(yǔ)法規(guī)則如下:
$routeProvider.when(url, { template: string, templateUrl: string, controller: string, function 或 array, controllerAs: string, redirectTo: string, function, resolve: object<key, function>});參數(shù)解釋?zhuān)?/p>
(1)template:
使用該概述,可以在template中寫(xiě)入HTML內(nèi)容,典型的例子是:
when('/',{template:'這是首頁(yè)頁(yè)面'})(2)templateUrl:
如果現(xiàn)在我們并不是要HTML內(nèi)容,而是需要一個(gè)模板文件來(lái)進(jìn)行整體替換,例子如下:
$routeProvider.when('/computers', { templateUrl: 'views/computers.html',});(3)controller:function、string或數(shù)組類(lèi)型,在當(dāng)前模板上執(zhí)行的controller函數(shù),生成新的scope。
也可以對(duì)應(yīng)的是控制器的名稱(chēng)。
(4)redirectTo:重定向的地址
(5)resolve:當(dāng)前控制器所依賴(lài)的其他模塊~
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《AngularJS入門(mén)與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注