美文网首页
【组件模块化7】SPA设计

【组件模块化7】SPA设计

作者: 八宝君 | 来源:发表于2018-05-11 10:56 被阅读0次

SPA设计的意义

SPA也就是单页面


设计意义

a、前后端分离:前端做业务逻辑,后端处理数据和接口,大家相互不用耦合起来。
b、减轻服务器压力:每一个页面不需要每次都去请求服务端,当应用比较复杂,有十几个页面时,每个用户操作几个页面只需要请求一次,这样在很大程度上减轻服务器压力。
c、增强用户体验:从首页点某块到详情页,传统方式是从首页请求完之后再去服务端请求详情页,每次的连接都需要消耗ens,http建立连接以及传输过程还有接口响应的时间,这些都是用户可以感知到的东西。当使用单页面时,不存在多次下载页面的时间,只有接口耗费的时间,一定程度上增强了用户体验。
d、Prerender预渲染优化SEO:单页设计对于SEO有一些弱势,对搜索引擎不太友好。
点击下方链接,可看关于Prerender预渲染优化SEO的一些相关资料:
http://codingfishman.github.io/2016/05/06/prerender%E9%A2%84%E6%B8%B2%E6%9F%93%E4%BC%98%E5%8C%96SEO/

工作原理

工作原理

a、history API: 更加优雅,对浏览器有要求


history API

每一个入口打开进去,对应打开一个页面。
比如说这里点击入口2也就打开了页面2,这里的打开页面是不要请求服务端,而是通过本地的JS来控制。
从入口打开某个页面,这是操作一
当浏览器点击了前进、后退、或其它控制,比如说程序控制history.go()指定某一步,这样回到某个入口对应的页面上去,这是操作二

也就是说:第一个是要能执行打开的动作,第二个是要做历史记录操作单。通过前进、后退等等操作回到任何一个步骤。这个都是SPA实现需要考虑的步骤。
刚才所说的两点实现起来所要经过的桥梁也就是history这个对象,这个对象上有两个东西来实现这两个东西的。onpopstatepushState
pushState :用来创建一个历史记录
onpopstate :用来相应浏览器的前进后退,也就是控制事件,当历史发生了改变会触发popstate,在这里面也就能回复到之前对应的某一个页面去。

b、hash:不是很优雅,但是兼容性好


hash

类似于history,其他差不多,不同是桥梁发生了变化,不再用history,而是用的hash。
一个URL上有host、search、和hash等,这里利用的原理就是hash。
当改变某一个地址时,修改这个hash,监听这个hashchange事件就知道页面的地址发生了变化,然后在这个事件内做相应的动作,也就能完成页面的切换。

对应的代码

history

history
浏览器打印

点击入口的时候并没有触发popstate,而是在前进后退的时候触发了这个事件。


hash

hash代码
对浏览器打印出来的操作

每次点击都会触发hashchange,在这里就能拿到当前的页面路径,也能拿到一些参数。可以放到hash后面去比如说b.html?xxx

相关文章

  • 【组件模块化7】SPA设计

    SPA设计的意义 SPA也就是单页面 a、前后端分离:前端做业务逻辑,后端处理数据和接口,大家相互不用耦合起来。b...

  • 4-1、css模块化设计

    1、项目设计与原理分析 1、css模块化设计 2、JS组件设计 3、自适应 4、SPA设计 5、构建设计 6、上线...

  • iOS组件化储备

    资料 组件化/模块化 蜂鸟商家版 iOS 组件化 / 模块化实践总结 模块化与解耦 浅析 iOS 应用组件化设计 ...

  • 前端开发——模块化(html模块化开发)

    web从进入2.0时代后,web开发人员更加注重模块化思想的运用,特别是有了SPA之后。 SPA——组件化 进入了...

  • react组件设计和分解

    react组件设计和分解 1.切割render 2.模块化组件 3.高阶组件

  • iOS组件化/模块化 APP方案实践篇

    1.博客文章: [模块化与解耦](模块化与解耦 - 刘坤的技术博客) 浅析 iOS 应用组件化设计 [iOS组件化...

  • 任职要求

    1. 精通 iOS 平台的模块化设计架构,能够设计出 SDK 和 UI 组件方案,并实现定制化UI组件界面,动画;...

  • 省市区 - 三级联动通用化模块组件

    都说我们要做模块化设计,而不要做功能化设计 什么是模块化设计,就是可插拔性高,组件化,想要就用,不要用拉倒,直接删...

  • 项目设计与原理分析

    一、CSS模块化设计 1、设计原则 2、设计方法 二、JS组件设计 1、设计原则 2、设计方法 三、自适应 1、基...

  • ios组件化/模块化

    1.博客文章: [模块化与解耦](模块化与解耦 - 刘坤的技术博客) [浅析 iOS 应用组件化设计](Skyli...

网友评论

      本文标题:【组件模块化7】SPA设计

      本文链接:https://www.haomeiwen.com/subject/pcaxdftx.html