项目结构:
一、配置路由
本来src文件夹下,router文件夹中有一个index.js
建议创建一个router.js,与main.js平级
然后在router.js中引入需要的组件,创建router对象
import App from './App' import Login from '@/pages/login' import Home from '@/pages/home' import Footer from '@/components/footer' const routers = [ { path: '/', component: App, children: [ { path: '/login', component: Login, meta: { title: '登录' } }, { path: '/home', component: Home, meta: { title: '首页' } }, { path: '/', component: Home, meta: { title: '首页' } } ] } ] export default routers
main.js也需要修改
import Vue from 'vue'
import App from './App'
import VueRouter from 'vue-router';
import routes from "./router";
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
routes: routes
})
new Vue({
el: '#app',
router,
render: h => h(App)
})
vue-router默认hash模式,该模式会将路径格式化为#开头
在添加mode:‘history’后将使用html5 history模式,该模式下没有#前缀
二、嵌套路由
App.vue
为了加深项目层级,app.vue只是作为一个存放组件的容器
router.js
const routers = [ { path: '/', component: App, children: [ { path: '/login', component: Login, meta: { title: '登录' } }, { path: '/home', component: Home, meta: { title: '首页' } }, { path: '/', component: Home, meta: { title: '首页' } } ] } ]
在配置的路由后面,添加 children,并在 children 中添加二级路由,就能实现路由嵌套
三、使用router-link跳转页面
在编译之后,<router-link>会被渲染为a标签,to相当于href
使用v-bind指令,to后面还可以加变量
还可以通过 $route.params 来获取到指定的参数,如 $route.params.id