1. 程式人生 > 程式設計 >vue學習之Vue-Router用法例項分析

vue學習之Vue-Router用法例項分析

本文例項講述了vue學習之Vue-Router用法。分享給大家供大家參考,具體如下:

Vue-router就像一個路由器,將元件(components)對映到路由(routes)後,通過點選<router-link>它可以在<router-view>中將相應的元件渲染出來。

1、使用vue-router的步驟

  //1、建立路由元件
  const Link1={template:'#link1'};
  const Link2={template:'#link2'};
  const Link3={template:'#link3'};
  //2、定義路由對映
  const routes=[
    {
      path:'/link1',//定義相對路徑
      component:Link1,//定義頁面的元件
      children:[
        {
          path:'intro',//子路由/link1/intro
          component:{template:'#ariesIntro'},name:'ariesIntro',//為路由命名
        },{
          path:'feature',component:{template:'#ariesFeature'},},{path:'/',redirect:'intro'}
      ]
    },{path:'/link2',component:Link2},{path:'/link3',component:Link3},redirect:'/link1'}        //配置根路由,使其重定向到/link1
  ];
  //3、建立router例項
  const router = new VueRouter({
    routes                   //縮寫,相當於 routes: routes
  });
  // 4、 建立和掛載根例項。
  const app = new Vue({
    router
  }).$mount('#app');              //掛載到id為app的div

注意:要設定根路由,頁面載入完成後預設顯示根路由,否則將什麼也不顯示。

在頁面中呼叫路由介面,<router-link> 預設會被渲染成一個 `<a>` 標籤,點選後在<router-view>渲染指定模板

  <div class="col-lg-offset-2 col-lg-2">
    <!-- 使用 router-link 元件來導航. -->
    <!-- 通過傳入 `to` 屬性指定連結. -->
    <router-link class="list-group-item" :to="{name:'ariesIntro'}">白羊座</router-link>
    <router-link class="list-group-item" to="/link2">處女座</router-link>
    <router-link class="list-group-item" to="/link3">金牛座</router-link>
  </div>
  <div class="col-lg-6">
    <div class="panel">
      <div class="panel-body">
        <!-- 路由出口,路由匹配到的元件將渲染在這裡 -->
        <router-view></router-view>
      </div>
    </div>
  </div>

2、巢狀路由

通過每個路由內的children陣列屬性可以為每個路由再配置子路由,子路由的路徑是基於父路由目錄下的,預設路徑會進行疊加。例如上面再link1中新增intro與feature兩個子路由,在link1模板中使用兩個子路由:

  <template id="link1">
    <div>
      <h3>白羊座</h3>
      <ul class="nav nav-tabs">
        <li class="active">
          <router-link to="/link1/intro">簡介</router-link>
        </li>
        <li><router-link to="/link1/feature">特點</router-link></li>
      </ul>
      <div class="tab-content">
        <router-view></router-view>
      </div>
    </div>
  </template>

最終效果如圖:

3、動態路由

在路由路徑中繫結變數,使其根據不同的變數值跳轉到不同頁面,例如將path:"goods/:goodsId",假如當goodsId為15時,就會路由到/goods/15頁面。

4、程式設計路由

通過js程式碼控制路由頁面的跳轉與傳值。例如給button繫結事件jump,在methods內實現:

jump(){
  this.$router.push('/cart?goodsId=123')
}

頁面跳轉到根下的cart目錄,並且傳遞引數goodsId,值為123。在cart頁面通過$route.query接收引數,直接在頁面內使用:

注意:區分跳轉是$router,接收引數是$route

<span>商品ID:{{$route.query.goodsId}}</span>

也可以指定頁面向前向後跳轉:this.$router.go(2),向前跳轉兩步 ,向後跳轉一步go(-1)。

5、命名路由

當路由路徑過長時,也可以用name屬性為路徑命名,在<router-link>中使用動態繫結:to="{name:'路徑名'}"訪問。例如白羊座的連結上使用 :to="{name:'ariesIntro'}",可直接跳轉到link1下的Intro頁面。

還可以對檢視進行命名,將元件渲染到指定檢視位置,例如在父元件中有一個預設檢視與兩個命名檢視一左一右:

<router-view></router-view>
<router-view class="left" name="cartview"></router-view>
<router-view class="right" name="imgview"></router-view>

在根路由中設定其元件components,將預設檢視渲染為GoodsList,左邊cartview檢視渲染為Cart元件,右邊imgview渲染為Image元件:

new Router({
 routes: [
  {
   path: '/',components:{
    default:GoodsList,cartview:Cart,imgview:Image
   }
}

結果如下:

希望本文所述對大家vue.js程式設計有所幫助。