安裝 vue-routercss
cnpm i vue-router -Shtml
index.htmlvue
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <app></app> </div> </body> </html>
main.jsvue-router
import Vue from 'vue' // 1,導入 vue-router包 import vueRouter from 'vue-router' // 導入app組件 import app from './app.vue' // 導入其餘組件 import account from './components/account.vue' import goodslist from './components/goodslist.vue' // 2,手動安裝vueRouter Vue.use(vueRouter); // 3,建立路由對象 var router = new vueRouter({ routes : [ // account goodslist { path : '/account' , component : account}, { path : '/goodslist' , component : goodslist} ] }) var vm = new Vue({ el : '#app', render : c => c(app), // render會把el 指定的容器中全部的內容都清空覆蓋 // 因此不要把router-view和router-link直接寫到 el 所控制的元素中。 router }) // 注意app這個組件是經過vm實例的render函數渲染的,render函數若是要渲染組件 // 渲染出來的組件只能放到el : '#app' 所指定的元素中去。 // account 和 goodslist組件是經過路由匹配監聽到的,因此,這兩個組件只能展現到 // 屬於路由的<router-view></router-view>中去。
app.vuenpm
<template> <div> <h1>app組件</h1> <router-link to="/account">account</router-link> <router-link to="/goodslist">goodslist</router-link> <router-view> </router-view> </div> </template> <script> export default { } </script> <style lang=""> </style>
account.vue和goodslist.vue組件爲簡單的template。app
在account組件中加上 登陸和註冊less
main.js函數
import Vue from 'vue' // 1,導入 vue-router包 import vueRouter from 'vue-router' // 導入app組件 import app from './app.vue' // 導入其餘組件 import account from './components/account.vue' import goodslist from './components/goodslist.vue' import login from './components/login.vue' import register from './components/register.vue' // 2,手動安裝vueRouter Vue.use(vueRouter); // 3,建立路由對象 var router = new vueRouter({ routes: [ // account goodslist { path: '/account', component: account, children : [ { path : 'login' , component : login}, { path : 'register' , component : register} ] }, { path: '/goodslist', component: goodslist } ] }) var vm = new Vue({ el: '#app', render: c => c(app), // render會把el 指定的容器中全部的內容都清空覆蓋 // 因此不要把router-view和router-link直接寫到 el 所控制的元素中。 router }) // 注意app這個組件是經過vm實例的render函數渲染的,render函數若是要渲染組件 // 渲染出來的組件只能放到el : '#app' 所指定的元素中去。 // account 和 goodslist組件是經過路由匹配監聽到的,因此,這兩個組件只能展現到 // 屬於路由的<router-view></router-view>中去。
account.vueui
<template> <div> <router-link to="/account/login">登陸</router-link> <router-link to="/account/register">註冊</router-link> <router-view></router-view> </div> </template> <script> export default { } </script> <style lang=""> </style>
<style lang="scss" scoped> // scoped只讓樣式在當前組件生效 /* 普通的style標籤只支持普通的樣式 */ /* 要啓用scss或less,須要爲style元素設置lang屬性 */ body { div { color: green; } } </style>
須要把vuerouter,和引入的組件,抽離到router.jsspa
router.js 須要注意:main.js和router.js 都須要導入vue-router
// 導入其餘組件 import account from './components/account.vue' import goodslist from './components/goodslist.vue' import login from './components/login.vue' import register from './components/register.vue' import vueRouter from 'vue-router' // 3,建立路由對象 var router = new vueRouter({ routes: [ // account goodslist { path: '/account', component: account, children : [ { path : 'login' , component : login}, { path : 'register' , component : register} ] }, { path: '/goodslist', component: goodslist } ] }) // 向外暴露 router export default router