都是雙頻無線路由,Vue路由怎麼這麼秀?

本文標識 : V00015

本文編輯 : Jack 風 編程工具 : Vscode 閱讀時長 : 6分鐘

什麼是路由

路由分類

  • 對於普通的網站,所有的超鏈接都是URL地址,所有的URL地址都對應伺服器上對應的資源;
  • 對於單頁面應用程式來說,主要通過URL中的hash(#號)來實現不同頁面之間的切換,同時,hash有一個特點:HTTP請求中不會包含hash相關的內容;所以,單頁面程式中的頁面跳轉主要用hash實現; 在單頁面應用程式中,這種通過hash改變來切換頁面的方式,稱作前端路由(區別於後端路由);

在 vue 中使用 vue-router

1.導入 vue-router 組件類庫:

<!-- 1. 導入 vue-router 組件類庫 -->    <script src="./lib/vue-router-2.7.0.js"></script>

2.使用 router-link 組件來導航

<!-- 2. 使用 router-link 組件來導航 -->  <router-link to="/login">登錄</router-link>  <router-link to="/register">註冊</router-link>

3.使用 router-view 組件來顯示匹配到的組件

<!-- 3. 使用 router-view 組件來顯示匹配到的組件 -->  <router-view></router-view>

4.創建使用`Vue.extend`創建組件

    // 4.1 使用 Vue.extend 來創建登錄組件      var login = Vue.extend({        template: '<h1>登錄組件</h1>'      });        // 4.2 使用 Vue.extend 來創建註冊組件      var register = Vue.extend({        template: '<h1>註冊組件</h1>'      });

5. 創建一個路由 router 實例,通過 routers 屬性來定義路由匹配規則

// 5. 創建一個路由 router 實例,通過 routers 屬性來定義路由匹配規則      var router = new VueRouter({        routes: [          { path: '/login', component: login },          { path: '/register', component: register }        ]      });

6. 使用 router 屬性來使用路由規則

// 6. 創建 Vue 實例,得到 ViewModel      var vm = new Vue({        el: '#app',        router: router // 使用 router 屬性來使用路由規則      });

· 設置路由高亮

· 設置路由切換動效

· 在路由規則中定義參數

1.在規則中定義參數:

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

2.通過 this.$route.params來獲取路由中的參數:


var register = Vue.extend({ template: '<h1>註冊組件 — {{this.$route.params.id}}</h1>' // 歡迎關注A2Data,感謝您的支援。 });

使用 `children` 屬性實現路由嵌套

  <div id="app">      <router-link to="/account">Account</router-link>        <router-view></router-view>    </div>      <script>      // 父路由中的組件      const account = Vue.extend({        template: `<div>          這是account組件          <router-link to="/account/login">login</router-link> |          <router-link to="/account/register">register</router-link>          <router-view></router-view>        </div>`      });        // 子路由中的 login 組件      const login = Vue.extend({        template: '<div>登錄組件</div>'      });        // 子路由中的 register 組件      const register = Vue.extend({        template: '<div>註冊組件</div>'      });        // 路由實例      var router = new VueRouter({        routes: [          { path: '/', redirect: '/account/login' }, // 使用 redirect 實現路由重定向          {            path: '/account',            component: account,            children: [ // 通過 children 數組屬性,來實現路由的嵌套              { path: 'login', component: login }, // 注意,子路由的開頭位置,不要加 / 路徑符              { path: 'register', component: register }            ]          }        ]      });        // 創建 Vue 實例,得到 ViewModel      var vm = new Vue({        el: '#app',        data: {},        methods: {},        components: {          account        },        router: router      });    </script>