SPA
为什么用SPA
1. 减少服务器压力 如果不用spa 那么每次切换页面的时候,就会向服务器发送一个请求
服务器返回一个html文件 如果使用了SPA 在切换时,不需要请求服务器,只要通过本地的js来切换即可 并且服务器端不需要配置路由 完全做到前后端分离
2. 增强用户体验 增加app流畅性
SPA路由的实现方式有哪些?
1. hash方式 使用location.hash和hashchange事件实现路由
2. history api 使用html5的history api实现 主要就是popState事件等
SPA实现hash
1. Router构造函数 当前路由 和 路由对象
2. 初始化init监听页面加载完成与 hash变化事件
3. 页面更新方法
4. 路由注册方法

SPA history API实现方法
两个方法: history.pushState() history.replaceState()
一个事件: history.onpopstate
方法的参数:
参数1: obj 这个对象可以被popstate事件读取到 也可以在history对象中获取
参数2: title标题, 但是浏览器目前还没能实现 由于本身是个字符串 所以我们用“” 来代替
参数3:URL路径,一般设定为相对的url 绝对路径需要保证同源
pushState 向浏览器的历史记录栈中压入一个历史记录
事件的触发:
在浏览器前进、后退时触发,一般是历史记录栈中的指针改变的时候就会触发这个事件了
history.state: 存储以上方法的data,不同浏览器的读写权限不一样
兼容: >IE10, >firefox4 ,>chrome8, safari5,opera11以上
为什么要使用History API
ajax的不足:
无法使用浏览器的前进、后退来切换前后
数据
单纯的使用ajax不利于搜索引擎优化

SPA的更多相关文章
- BI分析受阻?FineBI推出SPA螺旋式分析新功能!
过去,企业级的数据分析通常会有这么几种场景,业务部门托信息部门分析数据,结果报表一出,唇枪舌剑争论你我高低,数据不准,指标不对.信息部门欠缺业务概念,业务部门不懂技术逻辑,数据分析之路,暂时搁浅. 后 ...
- 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
- 如何快速开发SPA应用
前言 web早已经进入了2.0时代了,如今的网页大有往系统应用级别的方向发展的趋势,再也不是以前的简单展示信息的界面了.如今很多webapp已经做到了原生应用的功能,并且运用自身的优势逐步取代之.HT ...
- 使用backbone的history管理SPA应用的url
本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理.SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变.从实现上来看,url的管理和页面内容的管理是 ...
- AngularJS SPA Template For Visual Studio
单页面应用程序(SPA)[使用JavaScript.CSS和HTML强大的功能,可以构建一个单页面应用程序(SPAs)],它提供了丰富的用户体验页面.导航技术和AJAX提供必要的功能,而不用重新加载页 ...
- 移动前端开发-单页应用(spa)模型
一门新的技术诞生总会引来一番争议,单页Web应用程序也不例外,其最大的优势在于用户体验,对于内容的改动不需要加载整个页面:对服务器压力很小,消耗更少的带宽,与面向服务的架构更好地结合.使用HTML+C ...
- Single-page app(SPA)
有哪些值得推荐的一页式网站(Single-page app)? http://pro.weltrade.com/en/ 最近开到一下国外网站,一页到底,感觉很高大上,到底是怎么做出来的呢?技术要点是什 ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- 【读书笔记】WebApi 和 SPA(单页应用)--knockout的使用
Web API从MVC4开始出现,可以服务于Asp.Net下的任何web应用,本文将介绍Web api在单页应用中的使用.什么是单页应用?Single-Page Application最常用的定义:一 ...
- 使用node+vue.js实现SPA应用,nodevue.jsspa应用
使用node+vue.js实现SPA应用,nodevue.jsspa应用 http://www.bkjia.com/Javascript/1097617.html https://github.com ...
随机推荐
- 03-在tomcat部署网站多个网站
在Tomcat服务器发布两个项目 CRM OA server.xml配置文件 <Context docBase="C:\crm" path="/crm" ...
- nil/Nil/NULL/NSNull
nil/Nil/NULL/NSNull的区别 一个简单的小例子: NSObject *obj = nil; NSLog(@"%@",obj); =>null NSObject ...
- Spring整合quart初识
Spring集成quart有两种方式,一种是实现Job接口,一种是继承QuartzJobBean 刚开始报错:持久化时未序列化异常 <bean id="simpleJobDetail& ...
- 使用 nodeJs 开发微信公众号(设置自动回复消息)
微信向第三方服务器发送请求时会降 signature .timestamp. nonce . openid(用户标识),发送内容会以 xml 的形式附加在请求中 回复消息前提我们得拿到用户id , 用 ...
- “帮你”APP——NABCD需求分析
1.你的创意解决了用户的什么需求?(N) 本学校已存在的失物招领.表白墙.二手市场等QQ群普遍存在信息冗杂,时效性差等缺点.不能充分发挥信息有效性的,我们的“帮你”APP能够充分发挥信息的有效性,让失 ...
- Java数据类型(primitive)原始数据类型
1.小心别溢出来. 要确保变量能存下来所保存的值. 你无法用小杯子装大值.好吧,其实可以,但是会损失某些信息,也就是所说的溢位.当判断到所使用的容器不足以装载时,编译器会试着防止珍重情况发生.举例来说 ...
- 使用spring-session共享springmvc项目的session
一.说在前面 spring mvc项目,使用nginx,tomcat部署. 之前没做session共享,而nginx采用sticky模块进行分发. 但发现有时不能正确地指向同一台服务器,从而导致ses ...
- docker 启动报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
解决办法: # vi /etc/sysctl.conf 或者 # vi /usr/lib/sysctl.d/00-system.conf 添加如下代码: net.ipv4.ip_forward ...
- 执行makemigrations后错误集锦
在项目配置xadmin后,执行python manage.py makemigrations后出现了很多问题: 1.ModuleNotFoundError: No module named 'futu ...
- 【转】如何用Eclispe调试java -jar xxx.jar 方式执行的jar包
原文地址:https://www.cnblogs.com/zzpbuaa/p/5443269.html 有时候,我们经常会需要调试 java -jar xxx.jar方式运行的代码,而不是必须在Ecl ...