vue學(xué)習(xí)(12):路由

1.什么是路由

(1)后端路由:對于普通的網(wǎng)站疗垛,所有的超鏈接都是URL地址症汹,所有的URL地址都對應(yīng)服務(wù)器上的資源;

(2)前端路由:對于單頁面應(yīng)用程序來說贷腕,主要通過URL中的hash(#號)來實現(xiàn)不同頁面之間的切換背镇,同時,hash有一個特點泽裳;HTTP請求中不會包含hash相關(guān)的內(nèi)容瞒斩;所以,單頁面程序中的頁面跳轉(zhuǎn)主要用hash實現(xiàn)诡壁;

(3)在單頁面應(yīng)用程序中济瓢,這種通過hash改變來切換頁面的方式,稱作前端路由(區(qū)別于后端路由)

2.vue-router的基本使用

<div id="app">

<a href="#/login">登錄</a>

<a href="#/register">注冊</a>

//這是vue-router提供的 元素妹卿,專門用來當(dāng)做占位符的旺矾,將來,路由規(guī)則夺克,匹配到的組件箕宙,就會展示到這個router-view中去,所以:我們可以吧router-view認(rèn)為是一個占位符

<router-view></router-view>

</div>

//組件的模板對象

var login={

template:'<h1>登錄組件</h1>'

}

var register={

template:'<h1>注冊組件</h1>'

}

//1.創(chuàng)建一個路由對象铺纽,當(dāng)導(dǎo)入vue-router包之后柬帕,在window全局對象中,就有了一個路由的構(gòu)造函數(shù)狡门,叫做VueRouter

//在new路由對象的時候陷寝,可以為構(gòu)造函數(shù),傳遞一個配置對象

var routerObj = new VueRouter({

//router//這個配置對象中的router表示【路由匹配規(guī)則】的意思

routes:[//路由匹配規(guī)則

//每個路由規(guī)則凤跑,都是一個對象,這個規(guī)則對象褐奥,身上咖耘,有兩個必須的屬性:

屬性1:是path,表示監(jiān)聽撬码,哪個儿倒;路由鏈接地址;

屬性2:是component呜笑,表示义桂,如果路由是前面匹配到的path找筝,則表示component屬性對應(yīng)的那個組件

//注意:component的屬性值,必須是一個組建的模板對象曹抬,不能是組件的引用名稱

{path:'/login',component:login},

{path:'/register',component:register}

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

router:routerObj//將路由規(guī)則對象溉瓶,注冊到vm實例上,來監(jiān)聽URL地址的變化谤民,然后展示對應(yīng)的組件

})

3.路由router-link的使用

<div id="app">

//router-link默認(rèn)渲染為一個a標(biāo)簽

<router-link to="/login" tag="span">登錄</router-link>

<router-link to="/register">注冊</router-link>

<router-view></router-view>

</div>

var login={

template:'<h1>登錄組件</h1>'

}

var register={

template:'<h1>注冊組件</h1>'

}

var routerObj = new VueRouter({

routes:[

//{path:'/',component:login}

{path:'/',redirect:'/login'}//這里的redirect和Node中的redirect完全是兩碼事

{path:'/login',component:login},

{path:'/register',component:register}

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

router:routerObj

})

4.設(shè)置選中路由高亮的兩種方式

(1)直接改路由樣式.router-link-active{

color:red;

font-weight:800;

}

(2)改成自己的名稱.myactive:{

color:red;

font-weight:800;

}

var routerObj = new VueRouter({

routes:[

//{path:'/',component:login}

{path:'/',redirect:'/login'}//這里的redirect和Node中的redirect完全是兩碼事

{path:'/login',component:login},

{path:'/register',component:register}

],

linkAtiveClass:'myactive'

})

5.為路由切換啟動動畫

.v-enter,.v-leave-to{

opacity:0;

transform:translateX(140px);

}

.v-enter-active,.v-leave-active{

transition:all 0.5s ease;

}

<transition mode="out-in">

<router-view></router-view>

</transition>

6.路由傳參-使用query方式傳遞參數(shù)

<div id="app">

//如果在路由中触创,使用查詢字符串,給路由傳遞參數(shù)为牍,則不需要修改路由規(guī)則的path屬性

<router-link to="/login?id=10&name=zs" tag="span">登錄</router-link>

<router-link to="/register">注冊</router-link>

<router-view><router-view>

</div>

var login={

template:'<h1>登錄組件---{{$route.query.id}}---{{$route.query.name}}</h1>',

data(){

return{

msg:123

}

}

created(){

//組件的生命周期鉤子函數(shù)

console.log(this.$route.query.id)

}

}

var register={

template:'<h1>注冊組件</h1>'

}

var router = new VueRouter({

routes:[

{path:'/login',component:login},

{path:'/register',component:register}

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

//router:router

router

})

7.使用params方式傳遞路由參數(shù)

<div id="app">

<router-link to="/login/12/zs" tag="span">登錄</router-link>

<router-link to="/register">注冊</router-link>

<router-view><router-view>

</div>

var login={

template:'<h1>登錄組件---{{$route.params.id}}---{{$route.params.name}}</h1>',

data(){

return{

msg:123

}

}

created(){

//組件的生命周期鉤子函數(shù)

console.log(this.$route.params.id)

}

}

var register={

template:'<h1>注冊組件</h1>'

}

var router = new VueRouter({

routes:[

{path:'/login/:id/:name',component:login},

{path:'/register',component:register}

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

//router:router

router

})

8.使用children屬性實現(xiàn)路由嵌套

<div id="app">

<router-link to="/account">Account</router-link>

<router-view><router-view>

</div>

<template id="tmp1">

<div>

<h1>這是Account組件</h1>

<router-link to="/account/login" tag="span">登錄</router-link>

<router-link to="/account/register">注冊</router-link>

<router-view><router-view>

</div>

</template>

var account = {

template:"#tmp1"

}

var router = new VueRouter({

routes:[

{path:'/account',component:account,children:[

//子路由前面不要加/ 哼绑,否則永遠(yuǎn)以根路徑開始請求,這樣不方便用戶去理解URL地址

{path:'login',component:login},

{path:'register',component:register}

]},

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

//router:router

router

})

9.使用命名視圖實現(xiàn)經(jīng)典布局

html,body{

margin:0;

padding:0;

}

.header{

background-color:orange;

height:80px;

}

h1{

margin:0;

padding:0;

font-size:16px;

}

.container{

display:flex;

height:600px;

}

.left{

background-color:red;

flex:2;

}

.main{

background-color:pink;

flex:8;

}

<div id="app">

<router-view></router-view>

<div class="container">

<router-view name="left"></router-view>

<router-view name="main"></router-view>

</div>

</div>

var header = {

template:'<h1 class="header">header頭部區(qū)域</h1>'

}

var leftBox = {

template:'<h1 class="left">left側(cè)邊欄區(qū)域</h1>'

}

var mainBox = {

template:'<h1 class="main">mainBox主體區(qū)域</h1>'

}

var router = new VueRouter({

routes:[

{path:'/',components:{

'default':header,//defult是默認(rèn)

'left':leftBox,

'main':mainBox

}},

]

})

var vm = new Vue({

el:'#app',

data:{},

methods:{},

//router:router

router

})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碉咆,一起剝皮案震驚了整個濱河市抖韩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疫铜,老刑警劉巖茂浮,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壳咕,居然都是意外死亡席揽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門谓厘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幌羞,“玉大人,你說我怎么就攤上這事庞呕⌒卖幔” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵住练,是天一觀的道長地啰。 經(jīng)常有香客問我,道長讲逛,這世上最難降的妖魔是什么亏吝? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮盏混,結(jié)果婚禮上蔚鸥,老公的妹妹穿的比我還像新娘惜论。我一直安慰自己,他們只是感情好止喷,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布馆类。 她就那樣靜靜地躺著,像睡著了一般弹谁。 火紅的嫁衣襯著肌膚如雪乾巧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天预愤,我揣著相機與錄音沟于,去河邊找鬼。 笑死植康,一個胖子當(dāng)著我的面吹牛旷太,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播销睁,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼供璧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了榄攀?” 一聲冷哼從身側(cè)響起嗜傅,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎檩赢,沒想到半個月后吕嘀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡贞瞒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年偶房,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军浆。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡棕洋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乒融,到底是詐尸還是另有隱情掰盘,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布赞季,位于F島的核電站愧捕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏申钩。R本人自食惡果不足惜次绘,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邮偎,春花似錦管跺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至命迈,卻和暖如春贩绕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壶愤。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馏鹤,地道東北人征椒。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像湃累,于是被迫代替她去往敵國和親勃救。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文轉(zhuǎn)載于前端工匠治力。如有侵權(quán)聯(lián)系本人立刻刪除 一蒙秒、首先帶著問題 要學(xué)習(xí)vue-ro...
    qiaoguoxing閱讀 462評論 0 1
  • HTML部分 Hello App! <!-- 通過傳入 `to` 屬性指定鏈接. --> <!-- <rout...
    另一個童話閱讀 299評論 0 0
  • 路由,其實就是指向的意思宵统,當(dāng)我點擊頁面上的home按鈕時晕讲,頁面中就要顯示home的內(nèi)容,如果點擊頁面上的about...
    六月太陽花閱讀 580評論 0 3
  • vue-cli搭建項目 確保安裝了node與npm 再目標(biāo)文件夾下打開終端 執(zhí)行cnpm i vue-cli -g...
    Akiko_秋子閱讀 3,240評論 1 22
  • 今天是2019年8月24日,天氣晴又是美好的一天痊班。我前天和朋友的決定勤婚。嗯,就是我們一起去KTV玩涤伐。這回是我請客馒胆,因...
    喬女士閱讀 103評論 0 0