--- tags: VUE --- 【VUE】Router === [說明文件](https://router.vuejs.org/zh/) ``` 1. 進入點 main.js 2. Router配置檔 @/router/index.js 3. 分頁內容 Vue.components (***.vue) ``` ### 1. router配置檔 - @/router/index.js ```javascript import Vue from 'vue' import VueRouter from 'vue-router' // 官方的元件 import Home from '@/components/HelloWorld' // 自訂的分頁元件 Vue.use(VueRouter) export default new VueRouter({ routes: [ { name: '', // 元件呈現的名稱 path: '', // 對應的虛擬路徑 component: // 對應的元件 } ] }) ``` - @/main.js ```javascript= import router from './router' new Vue({ el: '#app', components: { App }, template: '<App/>', router }) ``` ### 2. 巢狀router - router/index.js ```javascript import Page from '@/components/pages/page' import child from '@/components/pages/child' import child2 from '@/components/pages/child2' import child3 from '@/components/pages/child3' export default new Router({ routes: [ { name: '首頁', // 元件呈現的名稱 path: '/index', // 對應的虛擬路徑 component: Home // 對應的元件 }, { path: '/page', component: Page, children: [ { name: '卡片1', path: '', component: child }, { name: '卡片2', path: 'child2', component: child2 }, { name: '卡片3', path: 'child3', component: child3 }, ] } ] }) ``` ### 3.同一個路徑載入多個元件 ```htmlmixed= <router-view name="menu"></router-view> <router-view></router-view> ``` - router/index.js ```javascript= import Page from '@/components/pages/page' import Menu from '@/components/pages/menu' components: { default: Page, menu: Menu }, ``` ### 4. class name替換 ```javascript= // router/index.js linkActiveClass: 'active' ``` ### 5. 自定義切換路由 https://router.vuejs.org/zh/api/#router-aftereach ```htmlmixed= <li class="nav-item"> <a href="#" class="nav-link" @click.prevent="updatePath">切換到指定頁面</a> </li> <li class="nav-item"> <a href="#" class="nav-link" @click.prevent="beforePath">回到前面</a> </li> ``` ```javascript= // menu元件 methods: { updatePath() { this.$router.push('/page/child2'); }, beforePath() { this.$router.back(); } } ```