1. 程式人生 > 實用技巧 >【Vue】Re15 Router 第二部分

【Vue】Re15 Router 第二部分

一、設定首頁重定向:

import Vue from 'vue';
import Router from 'vue-router';
import Home from "../components/Home";
import About from "../components/About";

Vue.use(Router);

const routerList = [
  /* 重定向首頁路由配置 */
  {
    path : '', /* 預設值預設指向 '/' */
    redirect : '/home',
  },
  {
    path : '/home', /* 為什麼這裡是path不是url? 因為完整的url還包括 專案根url(協議頭 + 域名(或者IP地址) + 埠號 + 專案根名稱路徑(可選))  
*/ name : 'home', /* 名字可以不加 */ component : Home }, { path : '/about', name : 'about', component : About }, ] const router = new Router({ routes : routerList }); export default router;

在訪問首頁時自動重定向跳轉到首頁元件

二、路由模式更改:

我們可以更改路由模式,預設使用的是hash,可以更改為history

import Vue from 'vue';
import Router from 
'vue-router'; import Home from "../components/Home"; import About from "../components/About"; Vue.use(Router); const routerList = [ /* 重定向首頁路由配置 */ { path : '', /* 預設值預設指向 '/' */ redirect : '/home', }, { path : '/home', /* 為什麼這裡是path不是url? 因為完整的url還包括 專案根url(協議頭 + 域名(或者IP地址) + 埠號 + 專案根名稱路徑(可選))
*/ name : 'home', /* 名字可以不加 */ component : Home }, { path : '/about', name : 'about', component : About }, ] const router = new Router({ routes : routerList, mode : 'history' }); export default router;

更改history之後,url將不再有#標識

三、Link元素補充

之前的案例只是使用了to一個屬性

<template>
  <div id="app">
    <router-link to="/home">去首頁</router-link>
    <router-link to="/about">去關於</router-link>
    <router-view></router-view>
  </div>
</template>

其他屬性

tag屬性

用來指定渲染之後的元素,預設是使用a元素

replace屬性

history記錄不再儲存,瀏覽器不可操作回退

但是實際設定之後並沒有起效。。。

<template>
  <div id="app">
    <router-link to="/home" tag="button" replace>去首頁</router-link>
    <router-link to="/about" tag="button" replace>去關於</router-link>
    <router-view></router-view>
  </div>
</template>

active-class屬性

link元素在路由匹配成功後自動設定一個router-link-active的class

可以設定改屬性,修改預設的值名稱:

這樣可以輕鬆的控制路由元素的樣式

或者在路由例項中配置修改【router/index.js】:

import Vue from 'vue';
import Router from 'vue-router';
import Home from "../components/Home";
import About from "../components/About";

Vue.use(Router);

const routerList = [
  /* 重定向首頁路由配置 */
  {
    path : '', /* 預設值預設指向 '/' */
    redirect : '/home',
  },
  {
    path : '/home', /* 為什麼這裡是path不是url? 因為完整的url還包括 專案根url(協議頭 + 域名(或者IP地址) + 埠號 + 專案根名稱路徑(可選))  */
    name : 'home', /* 名字可以不加 */
    component : Home
  },
  {
    path : '/about',
    name : 'about',
    component : About
  },
]
const router = new Router({
  routes : routerList,
  mode : 'history',
  linkActiveClass : 'sss'
});
export default router;

這樣就是改變預設設定的了

四、使用JS程式碼方式實現路由

<template>
  <div id="app">
<!--    <router-link to="/home" tag="button" active-class="aaa" replace>去首頁</router-link>-->
<!--    <router-link to="/about" tag="button" replace>去關於</router-link>-->
    <button @click="toHome">首頁</button>
    <button @click="toAbout">關於</button>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
  methods : {
    toHome () {
      this.$router.push('/home');
    },
    toAbout () {
      this.$router.push('/about');
    }
  }
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

push可更換replace方法,就是不能操作回退