npm install -g @vue/cli
//檢查版本
vue --version
複製代碼
vue create xxxx
//可視化界面
vue ui
複製代碼
import Vue from 'vue'
import Router from 'vue-router'
import Home from './views/Home.vue'//引入組件
Vue.use(Router)
export default new Router({
mode: 'history',// history hash
base: process.env.BASE_URL,
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: About
}
]
複製代碼
render: h => h(App)
等價於render:function(h){return h(App);}
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
複製代碼
this.$router
訪問路由器,也能夠經過 this.$route
訪問當前路由// Home.vue
export default {
computed: {
username () {
return this.$route.params.username
}
},
methods: {
goBack () {
window.history.length > 1 ? this.$router.go(-1):this.$router.push('/')
}
}
}
複製代碼
//name 進入的組件名稱
//params 傳遞的參數
<router-link :to="{name: 'home', params: {id: '123', name: 'aaa', age: 2}}">首頁傳參</router-link>
複製代碼
<p>{{$route.params.id}}</p>
<p>{{$route.params.name}}</p>
<p>{{$route.params.age}}</p>
複製代碼
<router-link to="/details/333/aaa">詳情頁</router-link>
複製代碼
<p>{{$route.params.userId}}</p>
<p>{{$route.params.name}}</p>
複製代碼
{
path: '/details/:userId/:name',
component: Details
},
複製代碼
<router-link>
<a>
標籤<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染結果 -->
<a href="home">Home</a>
<!-- 使用 v-bind 的 JS 表達式 -->
<router-link v-bind:to="'home'">Home</router-link>
<!-- 不寫 v-bind 也能夠,就像綁定別的屬性同樣 -->
<router-link :to="'home'">Home</router-link>
<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
<!-- 帶查詢參數,下面的結果爲 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>
複製代碼
<router-view>
<template>
<div class="navbar">
<ul id="main">
<li><router-link to="/home" >home</router-link></li>
</ul>
<!-- 路由匹配到的組件將顯示在這裏 -->
<router-view></router-view>
</div>
</template>
複製代碼
<router-view>
設置了名稱,則會渲染對應的路由配置中 components 下的相應組件<router-view class="view one"></router-view>
<!--Foo-->
<router-view class="view two" name="a"></router-view>
<!--Bar-->
<router-view class="view three" name="b"></router-view>
<!--Baz-->
<script> const router = new VueRouter({ routes: [ { path: '/', components: { default: Foo, a: Bar, b: Baz } } ] }) </script>
複製代碼
redirect
const router = new VueRouter({
routes: [
{ path: '/a', redirect: '/b' }
]
})
複製代碼
const router = new VueRouter({
routes: [
{ path: '/a', redirect: { name: 'foo' }}
]
})
複製代碼
const router = new VueRouter({
routes: [
{ path: '/a', redirect: to => {
// 方法接收 目標路由 做爲參數
// return 重定向的 字符串路徑/路徑對象
}}
]
})
複製代碼
alias
const router = new VueRouter({
routes: [
{ path: '/a', component: A, alias: '/b' }
]
})
複製代碼
router.beforeEach
const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// code
})
複製代碼
resolve
完以前一直處於等待中。to: Route
即將要進入的目標 路由對象from: Route
當前導航正要離開的路由next: Function
必定要調用該方法來 resolve
這個鉤子。執行效果依賴 next
方法的調用參數。next()
進行管道中的下一個鉤子。若是所有鉤子執行完了,則導航的狀態就是 confirmed
(確認的)。next(false
)中斷當前的導航。若是瀏覽器的 URL 改變了 (多是用戶手動或者瀏覽器後退按鈕),那麼 URL 地址會重置到 from
路由對應的地址。 -next('/')
或者 next({ path: '/' })
跳轉到一個不一樣的地址。當前的導航被中斷,而後進行一個新的導航。你能夠向 next
傳遞任意位置對象,且容許設置諸如 replace: true、name: 'home'
之類的選項以及任何用在 router-link
的 to prop
或router.push
中的選項。next(error)
若是傳入 next
的參數是一個 Error
實例,則導航會被終止且該錯誤會被傳遞給 router.onError()
註冊過的回調。next
方法,不然鉤子就不會被 resolved
。router.beforeResolve
和 router.beforeEach
相似html
區別vue
在導航被確認以前,同時在全部組件內守衛和異步路由組件被解析以後,解析守衛就被調用。vue-router
router.afterEach((to, from) => {
// code
})
複製代碼
router.beforeEnter
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) => {
// ...
}
}
]
})
複製代碼
const Foo = {
template: `...`,
beforeRouteEnter (to, from, next) {
// 在渲染該組件的對應路由被 confirm 前調用
// 不!能!獲取組件實例 `this`
// 由於當守衛執行前,組件實例還沒被建立
},
beforeRouteUpdate (to, from, next) {
// 在當前路由改變,可是該組件被複用時調用
// 舉例來講,對於一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候,
// 因爲會渲染一樣的 Foo 組件,所以組件實例會被複用。而這個鉤子就會在這個狀況下被調用。
// 能夠訪問組件實例 `this`
},
beforeRouteLeave (to, from, next) {
// 導航離開該組件的對應路由時調用
// 能夠訪問組件實例 `this`
}
}
複製代碼
fade-enter
進入過渡的開始狀態fade-enter-active
進入過渡的結束狀態fade-enter-to
進入結束狀態fade-leave
離開過渡的開始狀態fade-leave-active
離開過渡的結束狀態fade-leave-to
離開結束狀態