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

路由

  • 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动
  • 【路由 前后端渲染 url hash 和 html5 history】路由器提供了两种机制:路由和传送
    • 路由是决定数据包从来源到目的地的途径
    • 转送将输入端的数据转移到合适的输出端
  • 路由中有一个非常重要的概念叫路由表
    • 路由表本质上就是一个映射表,决定了数据包的指向
  • 后端路由阶段
    • 后端处理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)

    推荐阅读