路由
路由是根据不同的url展示不同的内容或页面。简单来说,路由就是URL到函数的映射。
route和router
route就是一条路由,将一个函数和一个URL关联起来,当访问 /users 的时候,会执行 getAllUsers() 函数;当访问 /users/count 的时候,会执行 getUsersCount() 函数。
url是 /login <-> 函数是 getUser()
url是 /users/count <-> 函数是 getUserscount()
** router 可以理解为一个容器,或者说一种机制,它管理了一组 route**。route 只是进行了URL和函数的映射,而在当接收到一个URL之后,去路由映射表中查找相应的函数,这个过程是由 router 来处理的
前端路由
不向后台发送请求,不刷新页面,前后端分离 ——> 浏览器中显示的网页中的大部分内容,都是由前端写的 js 代码在浏览器中执行,最终渲染出来的网页。
也可以这么理解:后端返回JSON数据,前端利用预先写的html模板,循环读取JSON数据,拼接字符串,并插入页面。响应页面内容的任务是由前端来做的,根据不同的url更新页面的内容。
使用场景
因此在单页面应用里,大部分页面解构不变,只改变部分页面内容时采用前端路由。
**随着SPA(单页面应用)的普遍使用,前后端开发分离,项目中基本都使用前端路由,通过路由实现页面的变化。**例如,通过vue开发的SPA中,切换路由,并不刷新页面,而是根据路由在虚拟DOM中加载所需要的数据,实现页面内容的改变。
优点:
- 用户体验好,页面初始化后,只需要根据路由变换页面内容,不需要再向服务器发送请求,内容变换速度快。
- 可以在浏览器中输入指定想要访问的url
- 实现了前后端分离,方便开发。可维护性相比于后端路由好
缺点: - 使用浏览器的前进、后退键的时候会重新发送请求,没有合理的利用缓存
- 单页面无法记住之前滚动的位置,无法在前进、后退的时候记住滚动的位置
图解前端路由阶段
后端路由
**服务器直接生产渲染好对应的HTML页面, 返回给客户端进行展示。**在浏览器的地址栏中切换不同的url时,每次都向后台服务器发出请求,服务器根据不同的响应不同的数据,浏览器接收到数据后再进行渲染,所以后端路由会刷新页面,如果网速慢的话,就会看到一个空白页面等待服务端返回数据,后台路由最大的问题就是不能前后端分离。
优点:
-
前端耗时少,减少首屏时间,模板统一在后端。
-
页面呈现速度快,但是受限于用户带宽。网速慢延迟页面加载,用户体验度不好。
-
当项目十分庞大时,加大了服务器端的压力,同时在浏览器端不能输入制定的url路径进行指定模块的访问。
缺点: -
占用服务器资源
-
代码的可维护性相比于前端路由较差
图解
后端路由阶段
前后端分离阶段
SPA单页面富应用阶段
参考
这里是引用
https://blog.csdn.net/qq_41671718/article/details/107059370
https://www.cnblogs.com/songyao666/p/11470030.html
https://zhuanlan.zhihu.com/p/166175382