单页 web 应用
原文链接 http://veryyoung.me/blog/2015/10/15/single-page-web-app.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
现在的公司很多大部分产品都做成了单页应用的形式。
单页应用是指在浏览器中运行的应用,它们在使用期间不会重新加载页面,从而获得比较良好的用户体验。
也就是说,单页面应用是仅包含单个网页的应用,目的是为了提供类似于本地应用的流畅用户体验。
现在很多网站都在用,比如 印象笔记、Google Docs、Gmail
<!-- more -->
实现方式
现在有很多 Js 框架来比较方便的构建单页应用,比较常用的有 AngularJS, Ember.js, Backbone 等。
这些框架都提供了 MVC、 构建 DOM、管理 UI 交互,管理状态和路由等功能。
优缺点
重点说下单页应用的优缺点。
优点:
1. 前后端分离:前端专注于页面展现,后端注重于存储和计算,可以避免前后端需要交叉的太多(现状是前端得写很多 Jstl、后端 Ajax、 Jsp 都要关注);
2. 后端代码重用:由于后端暴露给前端的只是一个个 Json 接口,同一套后端程序可以做成 Web 端、Mobile 端、手机端;
3. 用户体验好:可以很快的、局部的去渲染页面,避免跳转和重复渲染;
4. 有利于前端 CDN:由于前端代码和后端完全没必要放在一起,前端想怎么折腾都行,可以非常方便的 CDN,这是传统的 Jsp 应用搞不定的;
5. 减轻服务端压力:服务端只用来提供数据,不用管页面的任何东西,会显著提高吞吐性;
缺点:
1. 前端的开发难度增加:以前传统的方式,Js 什么的大部分后端都可以写了,做成单页,很多后端束手无策;
2. 页面抖动:由于过多的 Ajax 请求,导致很明显的页面抖动;
3. 初次加载慢:这个用过 Gmail 的人应该都知道;
4. 很多文字性的说明、静态页面很显得很尴尬;
5. 浏览器后退按钮、书签基本作废;
6. SEO 基本没有;
7. 基本无法做社交网站分享;
关于后面三点缺点,据说有解决方案,估计也不会解决的特别好。
而对于商业应用来说这些可能就足以致命,如果主要是企业展示站或者对外的商业应用,不太建议使用。
(我厂那么多单页应用,难到是因为大部分都是内部系统吗?哈哈)