1. 概述
- 路由是一个网络工程里面的术语
- 路由就是通过
互联的网络
把信息从源地址传输到目的地址的活动 - 后端路由:后端处理URL和页面之间的映射关系
- 前端路由:前端处理URL和页面之间的映射关系
2. 后端路由阶段
-
早期的网站开发整个HTML页面是由服务器来渲染的。服务器直接生产渲染好对应的HTML页面,返回给客户端进行展示
-
但是,一个网站,这么多页面,服务器如何处理呢?
●. 每个页面都有自己对应的网址,也就是URL
●. URL会发送到服务器,服务器通过正则对该URL进行匹配,并且最后交给一个Controller处理
●. Controller进行各种处理,最终生成HTML或者数据,返回给前端
●. 这就完成了一个IO操作 -
上面的这种操作就是后端路由,当我们页面中需要请求
不同的路径内容
时,交给服务器来进行处理,服务器渲染好整个页面,并且将页面返回给客户端,这种情况下渲染好的的页面,不需要单独加载任何的js和css,可以直接交给浏览器展示,这样也有利于SEO的优化 -
后端路由的缺点:
●. 一种情况是整个页面的模块由后端人员来编写和维护
●. 另一种情况是前端开发人员如果要开发页面,需要通过PHP
和java
等语言来编写页面代码
●. 而且通常情况下HTML
代码和数据以及对应的逻辑会混在一起,编写和维护都是非常糟糕的事情
3. 前端路由阶段
-
前后端分离阶段:
●. 随着Ajax的出现,有了前后端分离的开发模式
●. 后端只提供API来返回数据,前端通过Ajax获取数据,并且可以通过javaScript
将数据渲染到页面
●. 这样做最大的优点就是前后端责任的清晰,后端专注于数据上,前端专注于交互和可视化上
●. 并且当移动端(IOS/Android)
出现后,后端不需要进行任何处理,依然使用之前的一套API即可
●. 目前很多网站依然采用这种模式开发 -
单页面富应用(SPA)阶段:
●. 其实SPA最主要的特点就是在前端分离的基础上加了一层前端路由
●. 也就是前端来维护一套规则 -
前端路由的核心:
●. 改变URL,但是页面不进行整体的刷新
4. 认识vue-router
-
目前前端流行的三大框架,都有自己的路由实现
●. Angular 的ngRouter
●. React 的ReactRouter
●. Vue 的vue-router
-
vue-router 是
Vue.js
官方的路由插件,它和Vue.js
是深度集成的,适用于构建单页面应用vue-router
官网:https://router.vuejs.org/zh/ -
vue-router 是基于路由和组件的,路由用于设定访问路径,将路径和组件映射起来,在
vue-router
的单页面应用中,
页面的路径的改变就是组件的切换
5. 安装和使用vue-router
-
安装vue-router:
npm install vue-router --save // 这是运行时依赖
-
配置路由:
// 在 src/router/index.js 文件中 // 1. 导入路由模块: import VueRouter from 'vue-router' // 2. 导入Vue模块: import Vue from 'vue' // 3. 导入组件 import Home from '../components/Home.vue' // 这里的 .vue 后缀可以省略 import Home from '../components/Avout.vue' // 4. 安装路由插件: Vue.use(VueRouter) // 5. 创建路由实例,并且传入路由映射配置 const router = new VueRouter({ // 配置路由和组件之间的应用关系 routes:[ { // 网页重定向:当请求路径为空或者为为某些特点值,可以设置网页显示哪些东西。 path:'/', // path:'/' 和 path:'' 一个意思 redirect:'./home' }, { path:'/home', // 当文路径文 /home 的时候,显示下面的组件 component:Home }, { path:'/about', component:About } ] }) // 5. 导出路由对象: export default router
-
使用路由:
// 1. 在入口文件 main.js 中导入路由模块 import router from './router' // 会自动去 router 文件夹中找 index.js 文件 // 2. 在 Vue 实例中挂载创建的路由实例 new Vue({ el: '#app', router, render: h => h(App) }) //============================================================================ // 3. 使用路由:在 Vue 实例的的模板组件 App.vue 中,创建对应的组件标签 <div id="app"> <router-link to="/home">首页</router-link> // router-link 是 vue-router 插件内置的一个标签 <