路由 前后端渲染 url hash 和 html5 history

Posted HUMILITY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路由 前后端渲染 url hash 和 html5 history相关的知识,希望对你有一定的参考价值。

路由

  • 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动
  • 路由器提供了两种机制:路由和传送

    • 路由是决定数据包从来源到目的地的途径
    • 转送将输入端的数据转移到合适的输出端
  • 路由中有一个非常重要的概念叫路由表

    • 路由表本质上就是一个映射表,决定了数据包的指向
  • 后端路由阶段

    • 后端处理URL和页面之间的映射关系
    • 每个页面有自己对应的网址,就是URL
    • URL发送到服务器,服务器会通过正则对该URL进行匹配,并且最后交给一个Controller进行处理
    • Controller进行各种处理,最终生成html或者数据,返回给前端
    • 这就完成一个IO操作
  • 前后端分离阶段

    • 随着AJAX出现,有了前后端分离的开发模式
    • 后端只提供API来返回数据,前端通过AJAX获取数据,并且可以通过javascript将数据渲染到页面上
    • 这样做最大的优点就是前后端责任明晰,后端专注于数据,前端专注于交互和可视化上
    • 并且当移动端出现后,后端不需要进行任何处理,依然使用之前的一套API即可

前端渲染

  • SPA页面

    • 单页面富应用,整个网页只有一个html页面
  • 浏览器中显示的网页中的大部分内容,都是由前端写的js代码,在浏览器中执行,最终渲染出来的网页
  • 好处:网络传输数据量小。不占用服务端运算资源(解析模板),模板在前端(很有可能仅部分在前端),改结构变交互都前端自己来了,改完自己调就行。
  • 坏处:前端耗时较多,对前端工作人员水平要求相对较高。前端代码较多,因为部分以前在后台处理的交互逻辑交给了前端处理。占用少部分客户端运算资源用于解析模板。

后端渲染

  • 服务器直接生产渲染好对应的HTML页面, 返回给客户端进行展示。
  • 好处:前端耗时少,即减少了首屏时间,模板统一在后端。前端(相对)省事,不占用客户端运算资源(解析模板)
  • 坏处:占用服务器资源。

url的hash和html5的history

  • URL的hash

    • URL的hash也就是锚点(#),本质上是改变window.location的href属性
    • 我们可以通过直接赋值location.hash来改变href,但是页面不发生刷新
    • location.hash = \'aaa\'
  • HTML5的history

    • history.pushState({}, .. , \'sss\') //可返回
    • history.replaceState({},\'\',\'111\') //不可返回
    • history.go(-1) = history.back
    • history.forward() = history.go(1)

以上是关于路由 前后端渲染 url hash 和 html5 history的主要内容,如果未能解决你的问题,请参考以下文章

理解Web路由(浅谈前后端路由与前后端渲染)

前端路由的原理

大白话理解前后端路由+vue-router源码

前端路由原理之 hash 模式和 history 模式

路由模式(hash、history)

hash路由和history路由的区别