欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue-Router的使用方法

 更新時間:2018年09月05日 09:15:20   作者:鎮(zhèn)屌在尋找人生目標(biāo)的路上  
這篇文章主要介紹了Vue-Router的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

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

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

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

Vue-Router的最簡單使用

1.先注冊路由

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

3.定義組件

4.頁面定義跳轉(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匹配原則所以我們需要在原定義的路徑上加一個#號
      -->
      <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標(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匹配原則所以我們需要在原定義的路徑上加一個#號
      -->
<!--      <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標(biāo)簽來渲染router-link元素,router-link默認渲染為a鏈接元素,使用tag標(biāo)簽可以渲染其他元素,上述代碼中渲染為span元素了。無論渲染成什么元素,都依然與a連接一樣擁有跳轉(zhuǎn)的點擊事件

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

默認路徑

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

    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}
      ]
    })

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

使用默認類設(shè)置為高亮

Vue為router-link內(nè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>

使用自定義類名

當(dāng)我們想使用第三方定義的選中樣式,或者是自己想定義更為簡潔的樣式,可以使用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è)置路由鏈接是指定參數(shù)

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

且可以指定并獲取多個參數(shù),主要是再定義的組件對象內(nèi)部使用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)經(jīng)典布局

命名視圖在定義路由時使用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">主體內(nèi)容區(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設(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>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue中的性能優(yōu)化方案

    Vue中的性能優(yōu)化方案

    本文主要介紹了Vue中的性能優(yōu)化方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue?入口與?initGlobalAPI實例剖析

    Vue?入口與?initGlobalAPI實例剖析

    這篇文章主要為大家介紹了Vue?入口與?initGlobalAPI實例剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 如何在Vue3中正確使用ElementPlus,親測有效,避坑

    如何在Vue3中正確使用ElementPlus,親測有效,避坑

    這篇文章主要介紹了如何在Vue3中正確使用ElementPlus,親測有效,避坑!具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue基礎(chǔ)語法知識梳理下篇

    Vue基礎(chǔ)語法知識梳理下篇

    這篇文章主要介紹了Vue基礎(chǔ)語法知識梳理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • vue使用Proxy實現(xiàn)雙向綁定的方法示例

    vue使用Proxy實現(xiàn)雙向綁定的方法示例

    這篇文章主要介紹了vue使用Proxy實現(xiàn)雙向綁定的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 詳解vue配置后臺接口方式

    詳解vue配置后臺接口方式

    這篇文章主要介紹了vue配置后臺接口方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Vue使用正則校驗文本框為正整數(shù)

    Vue使用正則校驗文本框為正整數(shù)

    這篇文章主要介紹了Vue使用正則校驗文本框為正整數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue頁面加載完成后如何自動加載自定義函數(shù)

    Vue頁面加載完成后如何自動加載自定義函數(shù)

    這篇文章主要介紹了Vue頁面加載完成后如何自動加載自定義函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • elementui之el-table如何通過v-if控制按鈕顯示與隱藏

    elementui之el-table如何通過v-if控制按鈕顯示與隱藏

    這篇文章主要介紹了elementui之el-table如何通過v-if控制按鈕顯示與隱藏問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解在Vue中如何模塊化使用Vuex

    詳解在Vue中如何模塊化使用Vuex

    這篇文章給大家介紹了在Vue 中如何模塊化使用 Vuex,文中通過代碼示例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01

最新評論