vue-router 快速入門

vue-router 快速入門

配置路由

$ npm install vue-router --save 

routes.js

import Home from './pages/Home.vue'
import Gifs from './pages/Gifs.vue'
import User from './pages/User.vue'

export const routes = [
    { path: '', component: Home },
    { path: '/gifs', component: Gifs },
    { path: '/user/:id', component: User }
    //指定路由和對應要渲染的組件
    //404的path應該是'*',要放在最末尾,當前面的都匹配不到時才匹配到404頁面
    //this.$route.params.id 可以從路由中拿到id數據
]

main.js

import VueRouter from 'vue-router'
import { routes } from './routes'

Vue.use(VueRouter)
//路由初始化
const router = new VueRouter({
  routes
})

//將路由注入根組件
new Vue({
  el: '#app',
  ...
  router,
  render: h => h(App)
})

App.vue

<template>
    <div class="app">
        <router-view></router-view>
    </div>
</template>

在模板中標註出組件渲染的位置

#號的含義

#號前表示的是發送給服務端的請求,要求返回html文件,而#號後表示的是發送給本地js的請求以尋求解決

路由參數動態綁定

使用watch

watch: {
    '$route'(to,from) {
        //to當前路由,from上一個路由
        this.id = to.params.id
    }
}

路由的數據傳遞

<router-link :to="{ name: 'userEdit', params: { id: $route.params.id }, query: { locale: 'en', list: 2 } }"></router-link>

query參數可以達到地址欄出現/?locale=en&list=2
通過 $route.query.鍵名 來訪問

命名視圖

router-view 可以通過配置名字 name 來指定組件渲染的位置,增加了組件的複用性,比如分成 header main hero footer 來分別在一個視圖中的不同位置上加載不同的組件

組件懶加載

我們只需要加載我們需要的組件呈現給用戶,而其他不需要第一時間加載的組件,可以使用 webpack 實現異步加載,只在需要的時候纔會發出請求,請求加載另一個組件

routes.js

const User = resolve => {
    require.ensure(['./components/user/User.vue'], () => {
        resolve(require('./components/user/User.vue'))
    }, 'GroupName')
}
//webpack 異步加載,通過組名,將要同時一起加載的組件打包加載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章