开发者社区> nqmysb> 正文

[前端] 前端路由优缺点以及实现

简介: 前言 ssm时代,多页面时代,需要页面渲染模板,如 freemark,jsp 等模板引擎。前后端没有分离时,路由是由后端处理的,浏览器接收到 .do .action的请求,传到后台对应 spring mvc 会进行逻辑处理返回对应的页面,实现路由的分发 return **.
+关注继续查看

前言

ssm时代,多页面时代,需要页面渲染模板,如 freemark,jsp 等模板引擎。前后端没有分离时,路由是由后端处理的,浏览器接收到 .do .action的请求,传到后台对应 spring mvc 会进行逻辑处理返回对应的页面,实现路由的分发 return **.jsp 或者 return modelandview对象,封装了实体数据和视图渲染的模板
单页应用时代,只有一个html加载,所有页面都是通过js来改变页面元素,前后端分离,减轻服务器端压力,路由需要前端自己的实现

前端路由优缺点

优点

  1. 从性能和用户体验的层面来比较的话,后端路由每次访问一个新页面的时候都要向服务器发送请求,然后服务器再响应请求,这个过程肯定会有延迟。而前端路由在访问一个新页面的时候仅仅是变换了一下路径而已,没有了网络延迟,对于用户体验来说会有相当大的提升。
  2. 在某些场合中,用ajax请求,可以让页面无刷新,页面变了但Url没有变化,用户就不能复制到想要的地址,用前端路由做单页面网页就很好的解决了这个问题

缺点

使用浏览器的前进,后退键的时候会重新发送请求,没有合理地利用缓存

前端路由实现

页面路由

特点:会重新刷新页面,browserHistory

window.location.href='http://www.baidu.com' history.back();

hash路由

特点:不会刷新页面,不能跳转其他路径,只会在当前路径后面拼上#/test/sss hash就是#后面的路径浏览器不会解析,可以通过hashchange来进行操作hashHistory

window.location.href='#/test/sss' 
window.location.href='#test'   window.onhashchange = function(){
console.log('current hash:', window.location.hash); }

上面路由都可以用a便签来跳转

h5路由

特点:可以在同源下其他路径跳转 优于#路由,可以操作路径也可以操作hash 但是兼容不好

window.history.putState(data,title,url) //可以是绝对路径 或者是相对路径  新增当前路径到历史栈   
window.history.replaceState(data,title,url) //替代当前路径  不会刷新  把他替代历史栈的位置
onhashchange事件
window.onpopstate= function(e){console.log('h5:',e.state)}  //后退时触发
window.onpopstate = function(){
    console.log(window.location.href);
    console.log(window.location.pathname);
    console.log(window.location.hash);
    console.log(window.location.search);
}
window.history.back()
//不能跨域  
Uncaught DOMException: Failed to execute 'replaceState' on 'History': A history state object with URL 'http://www.baidu.com/sss' cannot be created in a document with origin 'https://www.baidu.com' and URL 'https://www.baidu.com/'.at <anonymous>:1:16

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端学习笔记202304学习笔记第十八天-vue3.0-导航守卫-全局控制路由的访问权限1
前端学习笔记202304学习笔记第十八天-vue3.0-导航守卫-全局控制路由的访问权限1
8 0
前端学习笔记202304学习笔记第十八天-vue3.0-导航守卫-通过路由展示登录组件
前端学习笔记202304学习笔记第十八天-vue3.0-导航守卫-通过路由展示登录组件
10 0
前端学习笔记202304学习笔记第十七天-vue3.0-实现嵌套路由
前端学习笔记202304学习笔记第十七天-vue3.0-实现嵌套路由
8 0
前端学习笔记202304学习笔记第十七天-vue3.0-获取动态路由参数的两种方案1
前端学习笔记202304学习笔记第十七天-vue3.0-获取动态路由参数的两种方案1
8 0
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法
7 0
前端学习笔记202304学习笔记第十七天-vue3.0-模拟简单的前端路由2
前端学习笔记202304学习笔记第十七天-vue3.0-模拟简单的前端路由2
6 0
前端学习笔记202304学习笔记第十七天-vue3.0-了解前端路由的工作
前端学习笔记202304学习笔记第十七天-vue3.0-了解前端路由的工作
10 0
前端学习笔记202304学习笔记第十七天-vue3.0-redirect路由重定向
前端学习笔记202304学习笔记第十七天-vue3.0-redirect路由重定向
9 0
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法2
前端学习笔记202304学习笔记第十七天-vue3.0-命名路由的概念和具体用法2
7 0
前端学习笔记202304学习笔记第十七天-vue3.0-路由高亮的两种方案
前端学习笔记202304学习笔记第十七天-vue3.0-路由高亮的两种方案
4 0
+关注
nqmysb
专注前后端全栈技术,大数据等方向研究,个人博客网站 liaocan.top
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
前端代码是怎样智能生成的
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载