angular中默認(rèn)路由的理解用法詳解
0.前言
前一段時(shí)間折騰angular的路由折騰的夠嗆, 這篇文章簡(jiǎn)單介紹一下自己的理解及用法。
1.路由的功能及原理
一開始并不理解路由的存在,因?yàn)閷W(xué)習(xí)html的時(shí)候,訪問模式是下面這樣子:
也就是網(wǎng)址會(huì)直接訪問到我們的頁(yè)面。那這樣有不好嗎?或者說有什么問題嗎?一個(gè)小demo確實(shí)沒有什么問題?但是設(shè)想兩個(gè)情景。
情景1:在一個(gè)功能/頁(yè)面的的前提下有很多子功能或者子頁(yè)面。我們這個(gè)時(shí)候可能會(huì)多建一個(gè)文件夾來區(qū)分這些功能或者頁(yè)面。越多的話越難管理。
情景2:安全及權(quán)限類問題,因?yàn)樗械腢RL都可以直接訪問網(wǎng)頁(yè),無法區(qū)分不同權(quán)限的用戶可以訪問哪些頁(yè)面,這個(gè)在一個(gè)成型的網(wǎng)站中是必備的功能,因?yàn)槟悴豢赡苋斡梢粋€(gè)普通用戶訪問管理員用戶才有的功能。
angular中的路由主要就是完成這些事的,可以用下面這張圖來簡(jiǎn)單表示下
也就是在用戶和網(wǎng)頁(yè)之間再加一道關(guān)卡,由這道關(guān)卡負(fù)責(zé)校驗(yàn)用戶權(quán)限、確定具體訪問哪個(gè)頁(yè)面等。這就是路由的主要作用。
2.默認(rèn)路由的使用
angular項(xiàng)目使用ng指令創(chuàng)建的時(shí)候,設(shè)定有一個(gè)默認(rèn)路由。位置如下圖:
比如我們使用ng g c teacher
創(chuàng)建一個(gè)teacher組件
然后,上面的下面改成下面這樣:
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { TeacherComponent } from './teacher/teacher.component'; const routes: Routes = [ {path:"tea",component:TeacherComponent} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
注:典型的angular路由(Route)有兩個(gè)屬性:
1.path:表示你訪問的路徑,類似于www.xxx.com/tea這種
2.component:表示你訪問這個(gè)路徑指向具體哪個(gè)組件
比如說上面的例子中,訪問localhost:4200/tea,它應(yīng)該訪問的就是TeacherComponent這個(gè)組件,但是我們還沒有配置完。
注意查看一下:app.module.ts中是否添加了AppRoutingModule和我們剛才添加的TeacherComponent 這個(gè)組件。
然后在app.component.html中添加下面的信息:
<router-outlet></router-outlet> <div> 這是默認(rèn)主頁(yè) </div>
執(zhí)行ng serve。然后訪問localhost:4200。你就會(huì)看到下面的頁(yè)面:
然后訪問localhost:4200/tea。就會(huì)看到下面的頁(yè)面:
可以看到,我們剛才創(chuàng)建的組件被成功加載出來了。
如果一開始你需要看一個(gè)全屏頁(yè)面的話, app.component.html只留一個(gè)<router-outlet></router-outlet>就行。
同理,如果需要展示其他頁(yè)面,通過ng 指令新建組件后,然后也是在app-routing.module.ts中加入類似下面的代碼
import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { StudentComponent } from './student/student.component'; import { TeacherComponent } from './teacher/teacher.component'; const routes: Routes = [ {path:"tea",component:TeacherComponent}, {path:"stu",component:StudentComponent} ]; @NgModule({ imports: [RouterModule.forRoot(routes)], // 初始化路由器,并讓它開始監(jiān)聽瀏覽器的地址變化 exports: [RouterModule], }) export class AppRoutingModule { }
同時(shí)不能忘記app.module.ts中也要通不加入組件。然后訪問localhost:4200/stu 就可以看到新創(chuàng)建的頁(yè)面了
到此這篇關(guān)于angular中的默認(rèn)路由的用法的文章就介紹到這了,更多相關(guān)angular默認(rèn)路由內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
angular實(shí)現(xiàn)表單驗(yàn)證及提交功能
這篇文章主要為大家詳細(xì)介紹了angular實(shí)現(xiàn)表單驗(yàn)證及提交功能的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02angularjs學(xué)習(xí)筆記之三大模塊(modal,controller,view)
本文給大家記錄的是angularjs的三大模塊(modal,controller,view)的使用說明,方便初學(xué)者能夠順利的學(xué)習(xí)angularjs.2015-09-09Angular2利用組件與指令實(shí)現(xiàn)圖片輪播組件
這篇文章主要給大家介紹了Angular2中組件與指令的一個(gè)小實(shí)踐,利用組件和指令實(shí)現(xiàn)一個(gè)圖片輪播組件的相關(guān)資料,文中給出了詳細(xì)的介紹和示例代碼,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03AngularJS ui-router (嵌套路由)實(shí)例
本篇文章主要介紹了AngularJS ui-router (嵌套路由)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03angularjs使用div模擬textarea文本框的方法
今天小編就為大家分享一篇angularjs使用div模擬textarea文本框的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10使用AngularJS 跨站請(qǐng)求如何解決jsonp請(qǐng)求問題
這篇文章主要介紹了使用AngularJS 跨站請(qǐng)求如何解決jsonp請(qǐng)求問題,下面通過本文給大家分享解決辦法,需要的朋友參考下2017-01-01