<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue-Router的使用方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:08:21
        文檔

        Vue-Router的使用方法

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

        使用 Vue.js 做項目的時候,一個頁面是由多個組件構成的,所以在跳轉頁面的時候,并不適合用傳統(tǒng)的 href,于是 vue-router 應運而生。

        路由,其實就是指向的意思,當我點擊頁面上的home按鈕時,頁面中就要顯示home的內容,如果點擊頁面上的about 按鈕,頁面中就要顯示about 的內容。Home按鈕  => home 內容, about按鈕 => about 內容,也可以說是一種映射. 所以在頁面上有兩個部分,一個是點擊部分,一個是點擊之后,顯示內容的部分。

        點擊之后,怎么做到正確的對應,比如,我點擊home 按鈕,頁面中怎么就正好能顯示home的內容。這就要在js 文件中配置路由。

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

        Vue-Router的最簡單使用

        1.先注冊路由

        2.將路由注冊到VM組件中

        3.定義組件

        4.頁面定義跳轉路徑

        <!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匹配原則所以我們需要在原定義的路徑上加一個#號
         -->
         <a href="#/login" rel="external nofollow" rel="external nofollow" >登錄</a>
         <a href="#/register" rel="external nofollow" rel="external nofollow" >注冊</a>
         <router-view></router-view>
         </div>
         </body>
         <script>
         var login={
         template:'<h1>登錄組件</h1>'
         }
         var register={
         template:'<h1>注冊組件</h1>'
         }
         var routerObj = new VueRouter({
         routes:[
         //此處的component只能使用組件對象,而不能使用注冊的模板的名稱
         {path:"/login",component:login},
         {path:"/register",component:register}
         ]
         })
         var vm = new Vue({
         el:'#app',
         data:{
         },
         methods:{
         
         },
         router:routerObj//將路由規(guī)則對象注冊到VM實例上
         })
         </script>
        </html>

        使用Router-Link替代a標簽

        這么做主要是為了去掉a標簽中的為了匹配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匹配原則所以我們需要在原定義的路徑上加一個#號
         -->
        <!-- <a href="#/login" rel="external nofollow" rel="external nofollow" >登錄</a>
         <a href="#/register" rel="external nofollow" rel="external nofollow" >注冊</a>-->
         <router-link to="/login" tag="span">登錄</router-link>
         <router-link to="/register">注冊</router-link>
         <router-view></router-view>
         </div>
         </body>
         <script>
         var login={
         template:'<h1>登錄組件</h1>'
         }
         var register={
         template:'<h1>注冊組件</h1>'
         }
         var routerObj = new VueRouter({
         routes:[
         //此處的component只能使用組件對象,而不能使用注冊的模板的名稱
         {path:"/login",component:login},
         {path:"/register",component:register}
         ]
         })
         var vm = new Vue({
         el:'#app',
         data:{
         },
         methods:{
         
         },
         router:routerObj//將路由規(guī)則對象注冊到VM實例上
         })
         </script>
        </html>

        同時,我們還可以利用tag標簽來渲染router-link元素,router-link默認渲染為a鏈接元素,使用tag標簽可以渲染其他元素,上述代碼中渲染為span元素了。無論渲染成什么元素,都依然與a連接一樣擁有跳轉的點擊事件

        重定向技術以及默認路徑

        默認路徑

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

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

        重定向方式指定默認路徑

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

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

        路由選中之后高亮設置

        使用默認類設置為高亮

        Vue為router-link內置了一個連接點擊之后高亮的類router-link-active,即可以在自己的style中設置

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

        使用自定義類名

        當我們想使用第三方定義的選中樣式,或者是自己想定義更為簡潔的樣式,可以使用linkActiveClass來定義,即在路由初始化時指定類名,在指定樣式時再自定義樣式

         var routerObj = new VueRouter({
         routes:[
         //此處的component只能使用組件對象,而不能使用注冊的模板的名稱
         {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ù)

        首先我們再設置路由鏈接是指定參數(shù)

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

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

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

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

        首先我們在路由定義的時候采用:定義params參數(shù)

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

        在實際使用過程中如何傳遞

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

        在組件中使用

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

        路由嵌套的實現(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">注冊</router-link>
        
         <router-view></router-view>
         </div>
         </template>
        
         <script>
        
         // 組件的模板對象
         var account = {
         template: '#tmpl'
         }
        
         var login = {
         template: '<h3>登錄</h3>'
         }
        
         var register = {
         template: '<h3>注冊</h3>'
         }
        
         var router = new VueRouter({
         routes: [
         {
         path: '/account',
         component: account,
         // 使用 children 屬性,實現(xiàn)子路由,同時,子路由的 path 前面,不要帶 / ,否則永遠以根路徑開始請求,這樣不方便我們用戶去理解URL地址
         children: [
         { path: 'login', component: login },
         { path: 'register', component: register }
         ]
         }
        }
         ]
         })
        
         // 創(chuàng)建 Vue 實例,得到 ViewModel
         var vm = new Vue({
         el: '#app',
         data: {},
         methods: {},
         router
         });
         </script>
        </body>
        </html>

        主要是由children屬性來實現(xiàn)的,上述代碼中由三個易錯點

        1.定義路由時,子路由沒有‘/'

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

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

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

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

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

        幾個組件分別定義如下

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

        我們在頁面上使用上述命名視圖時使用router-view的name屬性來定義

         <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設置視圖組件的將采用default命名視圖

        設置一下樣式

         <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>

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

        文檔

        Vue-Router的使用方法

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久99精品免费视频| 免费A级毛片无码A∨免费| 一本久久A久久免费精品不卡| 中文字幕在线免费看线人| 国产成人无码免费看视频软件| 亚洲精品偷拍视频免费观看| 亚洲国产一区在线观看| 一级人做人爰a全过程免费视频| 四虎影视在线永久免费观看| 91亚洲va在线天线va天堂va国产| 少妇亚洲免费精品| A级毛片内射免费视频| 亚洲精品成人片在线播放| 亚洲国产成人无码AV在线影院| 美女视频黄的免费视频网页| 午夜国产羞羞视频免费网站| 粉色视频成年免费人15次| 无码永久免费AV网站| 国产亚洲中文日本不卡二区| 国产成人yy免费视频| 亚洲AV日韩AV永久无码下载| 成人在线免费视频| 国产亚洲精品福利在线无卡一| 亚洲AⅤ男人的天堂在线观看| 成人免费毛片内射美女-百度| 国产精品亚洲一区二区麻豆| 国产在线不卡免费播放| 亚洲国产综合AV在线观看| 亚洲av再在线观看| 免费大片av手机看片| 国产成人免费手机在线观看视频| 成年免费a级毛片| 亚洲丁香色婷婷综合欲色啪| 免费精品人在线二线三线区别| 美女啪啪网站又黄又免费| 全部免费国产潢色一级| 亚洲免费观看视频| 亚洲欧洲日产国码久在线| 成人看的午夜免费毛片| 亚洲人成网站在线在线观看| 久久久精品国产亚洲成人满18免费网站|