国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

Vue-Router的使用方法

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:08:21
文檔

Vue-Router的使用方法

Vue-Router的使用方法:使用 Vue.js 做項(xiàng)目的時(shí)候,一個(gè)頁(yè)面是由多個(gè)組件構(gòu)成的,所以在跳轉(zhuǎn)頁(yè)面的時(shí)候,并不適合用傳統(tǒng)的 href,于是 vue-router 應(yīng)運(yùn)而生。 路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁(yè)面上的home按鈕時(shí),頁(yè)面中就要顯示home的內(nèi)容,如果點(diǎn)擊頁(yè)面上的about 按鈕
推薦度:
導(dǎo)讀Vue-Router的使用方法:使用 Vue.js 做項(xiàng)目的時(shí)候,一個(gè)頁(yè)面是由多個(gè)組件構(gòu)成的,所以在跳轉(zhuǎn)頁(yè)面的時(shí)候,并不適合用傳統(tǒng)的 href,于是 vue-router 應(yīng)運(yùn)而生。 路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁(yè)面上的home按鈕時(shí),頁(yè)面中就要顯示home的內(nèi)容,如果點(diǎn)擊頁(yè)面上的about 按鈕

使用 Vue.js 做項(xiàng)目的時(shí)候,一個(gè)頁(yè)面是由多個(gè)組件構(gòu)成的,所以在跳轉(zhuǎn)頁(yè)面的時(shí)候,并不適合用傳統(tǒng)的 href,于是 vue-router 應(yīng)運(yùn)而生。

路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁(yè)面上的home按鈕時(shí),頁(yè)面中就要顯示home的內(nèi)容,如果點(diǎn)擊頁(yè)面上的about 按鈕,頁(yè)面中就要顯示about 的內(nèi)容。Home按鈕  => home 內(nèi)容, about按鈕 => about 內(nèi)容,也可以說(shuō)是一種映射. 所以在頁(yè)面上有兩個(gè)部分,一個(gè)是點(diǎn)擊部分,一個(gè)是點(diǎn)擊之后,顯示內(nèi)容的部分。

點(diǎn)擊之后,怎么做到正確的對(duì)應(yīng),比如,我點(diǎn)擊home 按鈕,頁(yè)面中怎么就正好能顯示home的內(nèi)容。這就要在js 文件中配置路由。

官方文檔: https://router.vuejs.org/zh-cn/essentials/getting-started.html

Vue-Router的最簡(jiǎn)單使用

1.先注冊(cè)路由

2.將路由注冊(cè)到VM組件中

3.定義組件

4.頁(yè)面定義跳轉(zhuǎn)路徑

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script src="lib/vue.min.js"></script>
 <script src="lib/vue-router-3.0.1.js"></script>
 <style type="text/css">
 </style>
 </head>
 <body>
 
 <div id="app">
 <!--
 由于Vue-router的hash匹配原則所以我們需要在原定義的路徑上加一個(gè)#號(hào)
 -->
 <a href="#/login" rel="external nofollow" rel="external nofollow" >登錄</a>
 <a href="#/register" rel="external nofollow" rel="external nofollow" >注冊(cè)</a>
 <router-view></router-view>
 </div>
 </body>
 <script>
 var login={
 template:'<h1>登錄組件</h1>'
 }
 var register={
 template:'<h1>注冊(cè)組件</h1>'
 }
 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/login",component:login},
 {path:"/register",component:register}
 ]
 })
 var vm = new Vue({
 el:'#app',
 data:{
 },
 methods:{
 
 },
 router:routerObj//將路由規(guī)則對(duì)象注冊(cè)到VM實(shí)例上
 })
 </script>
</html>

使用Router-Link替代a標(biāo)簽

這么做主要是為了去掉a標(biāo)簽中的為了匹配hash地址的“#”,如下

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script src="lib/vue.min.js"></script>
 <script src="lib/vue-router-3.0.1.js"></script>
 <style type="text/css">
 </style>
 </head>
 <body>
 
 <div id="app">
 <!--
 由于Vue-router的hash匹配原則所以我們需要在原定義的路徑上加一個(gè)#號(hào)
 -->
<!-- <a href="#/login" rel="external nofollow" rel="external nofollow" >登錄</a>
 <a href="#/register" rel="external nofollow" rel="external nofollow" >注冊(cè)</a>-->
 <router-link to="/login" tag="span">登錄</router-link>
 <router-link to="/register">注冊(cè)</router-link>
 <router-view></router-view>
 </div>
 </body>
 <script>
 var login={
 template:'<h1>登錄組件</h1>'
 }
 var register={
 template:'<h1>注冊(cè)組件</h1>'
 }
 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/login",component:login},
 {path:"/register",component:register}
 ]
 })
 var vm = new Vue({
 el:'#app',
 data:{
 },
 methods:{
 
 },
 router:routerObj//將路由規(guī)則對(duì)象注冊(cè)到VM實(shí)例上
 })
 </script>
</html>

同時(shí),我們還可以利用tag標(biāo)簽來(lái)渲染router-link元素,router-link默認(rèn)渲染為a鏈接元素,使用tag標(biāo)簽可以渲染其他元素,上述代碼中渲染為span元素了。無(wú)論渲染成什么元素,都依然與a連接一樣擁有跳轉(zhuǎn)的點(diǎn)擊事件

重定向技術(shù)以及默認(rèn)路徑

默認(rèn)路徑

我們可以使用默認(rèn)路徑的方式指定根路徑,只需要在上述路由定義的方式中加入默認(rèn)路徑即可

 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/",component:login},
 {path:"/login",component:login},
 {path:"/register",component:register}
 ]
 })

重定向方式指定默認(rèn)路徑

同樣的使用一行代碼即可直接重定向到login路徑下,相比上述的默認(rèn)路徑,此方式在url的展示上更為明顯

 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/",redirect:"/login"},
 {path:"/login",component:login},
 {path:"/register",component:register}
 ]
 })

路由選中之后高亮設(shè)置

使用默認(rèn)類(lèi)設(shè)置為高亮

Vue為router-link內(nèi)置了一個(gè)連接點(diǎn)擊之后高亮的類(lèi)router-link-active,即可以在自己的style中設(shè)置

 <style type="text/css">
 .router-link-active{
 color: red;
 font-weight: 800;
 font-style: italic;
 font-size: 30px;
 }
 </style>

使用自定義類(lèi)名

當(dāng)我們想使用第三方定義的選中樣式,或者是自己想定義更為簡(jiǎn)潔的樣式,可以使用linkActiveClass來(lái)定義,即在路由初始化時(shí)指定類(lèi)名,在指定樣式時(shí)再自定義樣式

 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/",redirect:"/login"},
 {path:"/login",component:login},
 {path:"/register",component:register}
 ],
 linkActiveClass:'myactive'
 })

指定樣式

 <style type="text/css">
 .router-link-active,.myactive{
 color: red;
 font-weight: 800;
 font-style: italic;
 font-size: 30px;
 }
 </style>

路由傳參

使用query方式傳遞參數(shù)

首先我們?cè)僭O(shè)置路由鏈接是指定參數(shù)

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

且可以指定并獲取多個(gè)參數(shù),主要是再定義的組件對(duì)象內(nèi)部使用created方法來(lái)獲得

 var login={
 template:'<h1>登錄組件---{{$route.query.id}}--{{$route.query.name}}</h1>',
 created(){
 console.log(this.$route.query.id)
 }
 }

使用params方式傳遞參數(shù)

首先我們?cè)诼酚啥x的時(shí)候采用:定義params參數(shù)

 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/login/:id/:name",component:login},
 {path:"/register",component:register}
 ],
 })

在實(shí)際使用過(guò)程中如何傳遞

 <router-link to="/login/10/zhao">登錄</router-link>
 <router-link to="/register">注冊(cè)</router-link>
 <router-view></router-view>

在組件中使用

 var login={
 template:'<h1>登錄組件---{{$route.params.id}}</h1>',
 created(){
 console.log(this.$route.params.id)
 }
 }

路由嵌套的實(shí)現(xiàn)

<!DOCTYPE html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
 <script src="lib/vue-2.4.0.js"></script>
 <script src="lib/vue-router-3.0.1.js"></script>
 <style type="text/css">

 </style>
 </head>
 <body>
 <div id="app">

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

 <router-view></router-view>

 </div>

 <template id="tmpl">
 <div>
 <h1>這是 Account 組件</h1>

 <router-link to="/account/login">登錄</router-link>
 <router-link to="/account/register">注冊(cè)</router-link>

 <router-view></router-view>
 </div>
 </template>

 <script>

 // 組件的模板對(duì)象
 var account = {
 template: '#tmpl'
 }

 var login = {
 template: '<h3>登錄</h3>'
 }

 var register = {
 template: '<h3>注冊(cè)</h3>'
 }

 var router = new VueRouter({
 routes: [
 {
 path: '/account',
 component: account,
 // 使用 children 屬性,實(shí)現(xiàn)子路由,同時(shí),子路由的 path 前面,不要帶 / ,否則永遠(yuǎn)以根路徑開(kāi)始請(qǐng)求,這樣不方便我們用戶(hù)去理解URL地址
 children: [
 { path: 'login', component: login },
 { path: 'register', component: register }
 ]
 }
}
 ]
 })

 // 創(chuàng)建 Vue 實(shí)例,得到 ViewModel
 var vm = new Vue({
 el: '#app',
 data: {},
 methods: {},
 router
 });
 </script>
</body>
</html>

主要是由children屬性來(lái)實(shí)現(xiàn)的,上述代碼中由三個(gè)易錯(cuò)點(diǎn)

1.定義路由時(shí),子路由沒(méi)有‘/'

2.在父組件中定義子組件要寫(xiě)子組件的全路徑

3.在父組件中定義組件同樣要加入router-view元素

案例:路由命名視圖實(shí)現(xiàn)經(jīng)典布局

命名視圖在定義路由時(shí)使用components屬性(注意不是component)來(lái)定義:

 var routerObj = new VueRouter({
 routes:[
 //此處的component只能使用組件對(duì)象,而不能使用注冊(cè)的模板的名稱(chēng)
 {path:"/",components:{
 default:header,
 left:leftBox,
 main:mainBox
 }},
 ]
 })

幾個(gè)組件分別定義如下

 var header={
 template:'<h1 class="header">頭部區(qū)域</h1>'
 }
 var leftBox={
 template:'<h1 class=left>左部菜單區(qū)域</h1>'
 }
 var mainBox={
 template:'<h1 class="main">主體內(nèi)容區(qū)域</h1>'
 }

我們?cè)陧?yè)面上使用上述命名視圖時(shí)使用router-view的name屬性來(lái)定義

 <div id="app">
 <router-view></router-view>
 <div id="container">
 <router-view name="left"></router-view>
 <router-view name="main"></router-view>
 </div>

 </div>

未使用命名屬t性name設(shè)置視圖組件的將采用default命名視圖

設(shè)置一下樣式

 <style type="text/css">
 html,body{
 margin: 0;
 padding: 0;
 }
 h1{
 margin: 0;
 padding: 0;
 font-size: 16px;
 }
 .header{
 background-color: #6495ED;
 height: 200px;
 }
 
 #container{
 display: flex;
 height: 600px;
 }
 .left{
 flex: 2;
 background-color: #0000FF;
 }
 .main{
 flex: 8;
 background-color: #8A2BE2;
 }
 </style>

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vue-Router的使用方法

Vue-Router的使用方法:使用 Vue.js 做項(xiàng)目的時(shí)候,一個(gè)頁(yè)面是由多個(gè)組件構(gòu)成的,所以在跳轉(zhuǎn)頁(yè)面的時(shí)候,并不適合用傳統(tǒng)的 href,于是 vue-router 應(yīng)運(yùn)而生。 路由,其實(shí)就是指向的意思,當(dāng)我點(diǎn)擊頁(yè)面上的home按鈕時(shí),頁(yè)面中就要顯示home的內(nèi)容,如果點(diǎn)擊頁(yè)面上的about 按鈕
推薦度:
標(biāo)簽: 使用 VUE 用法
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top
主站蜘蛛池模板: 亚洲欧洲另类 | 国产高清在线观看 | 久久精品美女 | 亚洲精品毛片久久久久久久 | 亚洲美女一区二区三区 | 久久精品一级 | 五十路亲子中出在线观看 | 日韩啪| 岛国一区 | 久久久久久久一精品 | 久久久精品一区二区三区 | 黄色成人在线 | 精品久久久久久久一区二区手机版 | 亚洲欧美日韩国产色另类 | 亚洲v欧美v日韩v国产v | 欧美精品一区二区三区久久 | 国产精品久久久久久久y | 日韩国产在线观看 | 亚洲国产成人久久一区www | 欧美特黄一区二区三区 | 欧美在线一 | 亚洲欧洲综合 | 国产精彩视频在线观看 | 精品久久久久中文字幕日本 | 亚洲色图 第一页 | 国产欧美久久一区二区 | 欧美日韩在线一区 | 国产精品va在线播放 | 欧美日韩综合 | 欧美 日韩 国产 在线 | 日韩欧美一区二区三区久久 | 九九久久香港经典三级精品 | 国产成人精品一区二区三区 | 亚洲一区色图 | 亚洲日韩精品欧美一区二区 | 国产精品视频专区 | 亚洲1页| 国产成人成人一区二区 | 一区二区三区不卡视频 | 欧美日本免费一区二区三区 | 91精品啪国产在线观看免费牛牛 |