路由
什么是路由?
路由就是一组key-value的对应关系。多个路由需要经过路由器管理。
vue-router是vue的一个插件库,专门用来实现SPA应用
备注:执行npm i vue-router安装
SPA理解
1.单页Web应用(single page web application)
2.整个应用只有一个完整的页面
3.点击页面中的导航链接不会刷新页面,只会做页面的局部更新
4.数据需要通过ajax请求获取
路由分类
后端路由:
理解:value是function,用于处理客户端提交的请求
工作过程:服务器接收到一个请求时,根据请求路径找到匹配的函数来处理请求,返回相应数据
前端路由:
理解:value是component,用于展示页面
工作过程:当浏览器的路径改变时,对应的组件就会显示
案例:About和Home两个页面跳转
备注:一般路由组件如About、Home放在/src/pages。普通组件放components文件夹
index.html
//引入bootstrap.css
<link rel="stylesheet" href="<%= BASE_URL %>css/bootstrp.css">
main.js
//引入Vue import Vue from 'vue' //引入App import App from './App.vue' //引入VueRouter import VueRouter from 'vue-router' //引入路由器 import router from './router' //关闭Vue的生产提示 Vue.config.productionTip = false //应用插件 Vue.use(VueRouter) //创建vm new Vue({ el:'#app', render: h => h(App), router:router })
About.vue
<template> <h2>我是About的内容</h2> </template> <script> export default { name:'About' } </script>
Home.vue
<template> <h2>我是Home的内容</h2> </template> <script> export default { name:'Home' } </script>
Banner.vue
<template>
<div class="col-xs-offset-2 col-xs-8"> <div class="page-header"><h2>Vue Router Demo</h2></div> </div>
<template>
<script>
export default {
name:'Banner',
}
</script>
index.js(/src/router)
// 该文件专门用于创建整个应用的路由器 import VueRouter from 'vue-router' //引入组件 import About from '../pages/About' import Home from '../pages/Home' //创建并暴露一个路由器 export default new VueRouter({ routes:[ { path:'/about', component:About }, { path:'/home', component:Home } ] })
App.vue
<template> <div> <div class="row"> </div> <div class="row"> <div class="col-xs-2 col-xs-offset-2"> <div class="list-group"> <!-- 原始html中我们使用a标签实现页面的跳转 --> <!-- <a class="list-group-item active" href="./about.html">About</a> --> <!-- <a class="list-group-item" href="./home.html">Home</a> --> <!-- Vue中借助router-link标签实现路由的切换 --> <router-link class="list-group-item" active-class="active" to="/about">About</router-link> <router-link class="list-group-item" active-class="active" to="/home">Home</router-link> </div> </div> <div class="col-xs-6"> <div class="panel"> <div class="panel-body"> <!-- 指定组件的呈现位置 --> <router-view></router-view> </div> </div> </div> </div> </div> </template> <script> export default { name:'App', } </script>

浙公网安备 33010602011771号