Single Page Application
-
single page web application,SPA,就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。
特点
单页web应用开发流程
- 用循环的视角审视Web应用开发
- 框定一个一致的SPA图形用户界面(GUI)和模型
- 将SPA的原则带回服务器端
- 聚集于对合适的应用进行早期SPA开发[3]
注意几个网站的相同点,那就是在浏览器中,做了原先“应当”在客户端做的事情。它们的界面切换非常流畅,响应很迅速,跟传统的网页明显不一样,它们是什么呢?这就是单页Web应用。
所谓单页应用,指的是在一个页面上集成多种功能,甚至整个系统就只有一个页面,所有的业务功能都是它的子模块,通过特定的方式挂接到主界面上。它是AJAX技术的进一步升华,把AJAX的无刷新机制发挥到极致,因此能造就与桌面程序媲美的流畅用户体验。
并不是所有的项目都适合spa
1. 你的应用需要被搜索引擎索引吗? 据我所知,目前所有的搜索引擎还是比较讨厌JavaScript的,也就是说你页面里面用ajax更新的动态内容搜索引擎是不能访问到的。所以如果你的网站需要依靠搜索引擎进行推广,还是传统一点比较好。
2. 你的应用需要浏览器的后退按钮吗?几乎所有的浏览器用户每天都在频繁的使用浏览器的后退按钮来查看自己刚刚浏览过的内容,但是如果你使用了AJAX进行局部刷新,浏览过的内容就不能用后退按钮重现了。目前我所知道的只有GWT使用了iframe的方法实现了后退按钮的功能:
<iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' ></iframe>,不过没有研究它的具体解决方法。
众所周知,Ajax可以实现页面的无刷新操作——优点;但是,也会造成另外的问题,无法前进与后退!曾几何时,Gmail似乎借助iframe搞定,如今,HTML5让事情变得如同过家家般简单。
当执行Ajax操作的时候,往浏览器history
中塞入一个地址(使用pushState
)(这是无刷新的);于是,返回的时候,通过URL或其他传参,我们就可以还原到Ajax之前的模样。
本demo所展示的就是ajax的内容载入与地址栏的前进与后退,典型应用,对于熟悉相关知识点很有帮助。
http://www.zhangxinxu.com/wordpress/2013/06/html5-history-api-pushstate-replacestate-ajax/
3. 你的应用想要用户收藏某个页面吗?AJAX单页应用的特点就是地址栏的url跟浏览器显示内容不是一一对应的关系,所以用户收藏的页面重新打开的时候显示的内容跟收藏时的内容可能是不一样的。
4. 你的应用页面很复杂吗?需要用ajax进行复杂页面的更新吗? ajax是使用xml, text等文本与服务端进行交互的,大量的传输不但影响系统的性能,对系统安全是也很大的威胁。
http://www.cnblogs.com/ppforever/p/5126640.html
http://www.cnblogs.com/ppforever/p/5126640.html
http://blog.csdn.net/jinhuiyu/article/details/4738719
最新文章
- MongoDB-分片片键
- hibernate关联关系笔记
- UESTC 1015 Lweb and pepper --前,后缀最值
- HDU2298 Toxophily
- Lucene 4.7 --实现搜索
- The L1 Median (Weber 1909)
- 2014第五届蓝桥杯试题C/C++程序设计B组——切面条
- MongoDB之【增加用户认证、增加用户、删除用户、修改用户密码、读写权限、只读权限】
- 关于int **
- 关于百度鹰眼中 xcode 7 编译报错问题
- 九度OnlineJudge之1020:最小长方形
- 在web网页中正确使用图片格式
- 团队作业8——第二次项目冲刺(Beta阶段)日志集合处
- win10 UWP Controls by function
- ionic3 安卓硬件返回
- eslint的安装与使用
- SharePoint PowerShell 启动工作流
- 《Linux内核分析》第一周笔记 计算机是如何工作的
- [转]Oracle trunc()函数的用法
- 字符串中包含汉字和\u,显示出汉字来
热门文章
- 测开之路二十九:Flask基础之jinja2模板
- play framework 在idea简单运行配置(mac为例)
- 爱奇艺面试Python,竟然挂在第5轮…(转)
- PAT甲级【2019年9月考题】——A1160 Forever【20】
- java File I/O
- Vue是如何渲染页面的,渲染过程以及原理代码
- wireshark抓取本地回环及其问题 转摘:http://www.cnblogs.com/luminji/p/3503464.html
- js 动态绑定解绑事件
- tcpdump 与 抓包分析
- Docker基础(上)