Vue基础(五)---- 前端路由
基本结构:
◆ 1、路由的基本概念与原理
◆ 2、vue-router的基本使用
◆ 3、vue-router嵌套路由
◆ 4、vue-router动态路由匹配
◆ 5、vue-router命名路由
◆ 6、vue-router编程式导航
◆ 7、基于vue-router的案例
◆ 1、路由的基本概念与原理
1.1 路由
路由是一个比较广义和抽象的概念,路由的本质就是对应关系。
在开发中,路由分为:
◆ 后端路由
◆ 前端路由
◆ 后端路由
本质:后端路由根据不同的 URL地址 分发不同的 服务器资源。
过程:浏览器发送url 地址请求 --------------被后端路由拦截----------------> 后端路由去服务器查找对应的服务器资源 --------------------> 后端路由发送给浏览器进行渲染
(早期开发中,绝大多数网站都是采用这种方式)--- 后端渲染
但是这种渲染方式会存在性能问题,假设浏览器有频繁的提交表单的数据交互行为,后端路由会造成网页的不断刷新,体验非常差
因此:
SPA(Single Page Application)单页面应用程序
? 后端渲染(存在性能问题)--------------发展最初
? Ajax前端渲染(前端渲染局部刷新网页,提高性能,但是不支持浏览器的前进后退操作)----------------发展中
? SPA(Single Page Application): ---------------发达
整个网站只有一个页面,内容的变化通过Ajax局部更新实现、同时支持浏览器地址栏的前进和后退操作
? SPA实现原理之一:基于URL地址的hash(hash的变化会导致浏览器记录访问历史的变化、但是hash的变化不会触发新的URL请求)
? 在实现SPA过程中,最核心的技术点就是前端路由
2. 前端路由
?概念:根据不同的用户事件,显示不同的页面内容
?本质:用户事件与事件处理函数之间的对应关系
不推荐手动模拟路由,尽量使用 Vue.js 官方的路由管理器--------------Vue Router
◆ 2、vue-router的基本使用
Vue Router(官网:https://router.vuejs.org/zh/)是Vue.js 官方的路由管理器。
它和Vue.js 的核心深度集成,可以非常方便的用于SPA应用程序的开发。
? 支持HTML5 历史模式或 hash 模式
? 支持嵌套路由
? 支持路由参数
? 支持编程式路由
? 支持命名路由
? 导航守卫
? 路由懒加载
2.1 基本使用步骤
1. 引入相关的库文件
首先引入:<script src="./lib/vue_2.5.22.js"></script>
其次引入:<script src="./lib/vue-router_3.0.2.js"></script>,因为 vue-router 是依赖于 vue 的,顺序不能颠倒
2. 添加路由链接
3. 添加路由填充位
<div id="app"> <!-- router-link 是 vue 中提供的标签,默认会被渲染为 a 标签 --> <!-- to 属性默认会被渲染为 href 属性 --> <!-- to 属性的值默认会被渲染为 # 开头的 hash 地址 --> <router-link to="/user">User</router-link> <router-link to="/register">Register</router-link> <!-- 路由占位符 --> <!-- 将来通过路由规则匹配到的组件,将会被渲染到 router-view 所在的位置 --> <router-view></router-view> </div>
4. 定义路由组件
const User = { template: "<h1>User 组件</h1>", }; const Register = { template: "<h1>Register 组件</h1>", };
5. 配置路由规则并且创建路由实例
// 创建路由实例对象 const router = new VueRouter({ // 所有的路由规则 routes: [ // 每个路由规则都是一个配置对象,其中至少包含 path 和 component 两个属性: // path 表示当前路由规则匹配的 hash 地址 // component 表示当前路由规则对应要展示的组件 { path: "/user", component: User }, { path: "/register", component: Register }, ], });
6. 把路由挂载到Vue 根实例中
// 创建 vm 实例对象 const vm = new Vue({ // 指定控制的区域 el: "#app", data: {}, // 挂载路由实例对象 // router: router(在ES6中如果属性名和值一样,可以简写) router, });
相关推荐
颤抖吧腿子 2020-09-04
anaction 2020-08-17
Tplinkly 2020-08-15
kiven 2020-09-11
softwear 2020-08-21
yuzhu 2020-11-16
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
sjcheck 2020-11-03
怪我瞎 2020-10-28
源码zanqunet 2020-10-28
gloria0 2020-10-26
王军强 2020-10-21
学习web前端 2020-09-28
QiaoranC 2020-09-25
anchongnanzi 2020-09-21
安卓猴 2020-09-12
Macuroon 2020-09-11