说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

富Web应用开发的七大原则

HTML文档下载 WORD文档下载 PDF文档下载
针对富Web应用,开发者应该注意哪些要点?原文作者Guille认为如何让用户以最快的时间获得想要的数据尤为重要,开发者应注重七大原则,包括:服务器渲染、即时响应用户输入、响应数据/状态变更、增强历史记录处理等。
 【编者按】对于Web开发者而言,除了具拥有精湛的开发技术外,还应具备一些软技能。而针对富Web应用,开发者应该注意哪些要点呢?原文作者Guille认为如何让用户以最快的时间获得想要的数据尤为重要,开发者应注重以下七大原则。译文如下:


网络上有关Web开发未来的热门讨论有很多,比如:JavaScript能否替代实现诸如历史记录、网页浏览、页面渲染等浏览器功能?开发者应该放弃后端,直接进行HTML渲染吗?单页面应用会流行起来吗?

要解答上述问题,我会尝试以JavaScript为突破口,从用户体验方面进行考虑;如何能让用户以最快的时间获得想要的数据是我最为看重的。

1. 服务器渲染是必须的

目前有个比较错误的分立观点:“服务器渲染与单页面应用的对立。”如果我们真的想最大程度地提升用户体验和性能,把这两者区别对待、互为排斥都不是好的解决方法。

首先,当进行页面传送时,互联网连接本身有个理论速度限制。地理位置上两点间的传输速度受到地域、带宽、路由等因素影响;减少两点之间往返的通讯次数显得尤为关键。一个足够灵活的系统应当能够均衡好浏览器端和服务器端的代码渲染工作,减少网站和网络应用之间的差别。

2. 即时响应用户输入

当用户访问某个网站时,每个交互动作都应该尽量做到少延迟、快响应。

HTML中文档的连接是透过超链或<a>标签完成的。当点击这些链接时,浏览器会发送一个请求,这个请求被接收和响应前的用时是无法确定的。相反,JavaScript能够针对用户输入做出即时的响应。例如谷歌或百度,现在我们在其首页进行输入时,不用点击搜索或确定,浏览器会自动进入搜索结果页面;还有就是智能提醒,边输入边提醒的功能也是非常人性化的。


只要在Google搜索栏敲任何一个键,都会直接跳入搜索结果页面

3. 响应数据/状态变更

现在无论是采用传统的页面刷新还是AJAX交互来对静态页面执行更新都显得稍稍落伍了。目前更好的做法是自行更新(self-updating)。

如果有款应用同时打开了多个标签/页面,如果用户进行了登出操作,所有已打开的标签都应该能同时失效。要想做到类似的自行更新,状态协调(state reconciliation)是需要多加考虑的。在只是更新少量数据的参合,我们往往很容易忽略了长时间连接中断后该如何让程序作出正确响应。比方说休眠电脑数天后再打开,我们的程序该如何对这个状态(如机器状态标识码)进行处理呢?如果我们想在初始页面传送数据,在客户端脚本装载前必须确保数据是可访问的。一旦发生连接中断,脚本建立的初始连接必须能够进行会话恢复。


每个页面都指向了同一个会话和登入状态

4.控制与服务器的数据交换

在万维网中,客户端和服务器端的数据交换一般限于已下几种形式:

  1. 点击连接,GET获取了新的页面,然后渲染这个页面;
  2. 通过POST或GET提交表单,然后渲染新页面;
  3. 异步装入一个图像或对象,然后渲染它。

其中,上述第二种方式最容易出问题。从性能角度来看,不断触发新页面来发送数据是个效率极差的做法。例如下面这个曾经令人抓狂的错误:


现在网络上有丰富的APIs(如XMLHttpRequest,EventSource)不但能帮助我们很好地控制数据流向,同时能帮助增强用户体验,如表单的填写、发送。

如前述的状态协调,如果程序检测到连接中断后,把数据暂存起来将能帮助日后的会话恢复。服务工作器(Serviceworker)的引入在这时就变得非常重要了。它能够让JavaScriptWeb应用在后台运行。即使程序没有开启,我们仍然能够在后台同步用户数据。

5.增强历史记录处理

一般来说,页面状态的过渡依赖于URL的变更;这给我们带来了增强历史记录管控的机会。


当浏览历史页面时,评论的折叠状态应该得到保留

例如,我们通过手机应用查看商品时,发现了心仪物品,一般情况下如果这时候进行购物车操作都会中止当前界面的访问;购物完毕后点击返回,如果先前已经翻看了很多页并滚动到某个位置,如果这时能根据历史记录准确地返回之前的位置,用户会对此非常赞赏的。再譬如,我们填写了某个表单,如果发送失败,点击返回后能自动帮助用户把已经填好的数据进行恢复,这也是能极大增强用户体验的。

6. 推进代码变更

如果程序的代码发生变更,采用什么方法来使客户端对此做出正确响应是很重要的。

一个好的代码更新推送机制是如果发现有新的版本,能够及时提醒客户端对此进行选择处理。又或者是在HTTP请求的头部信息中附加版本号信息,让服务器针对版本号作出正确处理。

更好的一个处理方法是进行热代码重载(hot codereloading)。它的意思是不需要对整个页面进行刷新,而只是对变更关联部分或模块进行在线更新。这需要对全局影响进行全面评估,防止部分模块更新后出现其它异常。

7. 预先感知

一个丰富的JavaScript应用能够有效识别用户输入并做出预感反馈。

典型的例子是当鼠标悬停在某个链接时,服务器已经开始着手准备数据,这将极大地减少渲染新页面用时。还有就是能针对鼠标动作做出交互反馈,如移动,碰撞,移出/入等。


这是一个用jQuery实现的感知鼠标动作的例子

写在最后:

Web仍然是当前信息传播的最重要媒介之一。当我们不断为页面添加动态交互的同时,我们必须确保新技术能很好地做好承上启下的角色。JavaScript是开拓新局面的当头先锋,随着其使用得更为广泛更为深入,用户体验也会迈进新的台阶。

原文链接:Rauchg

全国电脑健康日启动 360搭建电脑维修开放平台 C语言实现归并排序 360石晓虹:针对移动Apps的DDoS攻击将成重大威胁 更社交化:谷歌将推出Google Play平台服务 C语言对磁盘文件进行快速排序 传Google已关闭短信搜索服务 PayPal首席安全官:靠密码验证身份即将寿终正寝 DRM你又赢了:其API纳入HTML5标准 豌豆荚王俊煜:洗白白其实是一个计划外的产物 抢Google等巨头生意,纽约大学小伙挖掘并出售自己数据 noBackend:前端优先的开发模式 C、CPP const 详解 三星5G技术获得突破性进展 未来传输速度可达10Gbps 5月14日:1984年美国社交网站Facebook创办人Mark Zuckerberg出生 Chartkick:一行代码即可绘制出漂亮的图表 用友UAP将打造开放平台 建应用商店销售企业级应用 共享软件营销:如何将你的产品推向海外 谷歌使用Debian Linux作为GCE的默认操作系统 大数据?别唬人了!我们真的需要盲目烧钱追求大数据吗? 日本社交手游公司GREE巨星陨落 中国区全员被裁 战歌:85后手游开发团队背后的故事 分秒钟做款App:细数国内外在线DIY应用网站 指点传媒CEO专访:紧握二三线市场用户命脉 专访Waygo创始人:白切鸡怎么翻译? 探究共享软件海外营销新策略(西安站) 讲师秀8:车音网沈康麒和他的智能驾车服务 数据可视化独领风骚:看这6家初创公司如何玩转大数据? 最新研究显示:IE10防恶意软件能力比Chrome等浏览器都要强 Windows Blue正式定名Windows 8.1 对Windows 8及RT用户免费 Testin云测试破1000万次 自动化测试成趋势 接手Android后首次接受媒体采访 Sundar Pichai谈Android未来 两机相连的问题??? 提问题给的最高分于其余的分有何关系?请问斑竹 什么叫数据库的别名,应该怎样设置数据库的别名? 怎样与telnet应用服务程序通信 怎样在TStringGrid的整个框内绘图,而不是在某个单元中绘图? WEB安全认证问题 TO: neweb(永不言败) 请问各位大虾,哪里有jdk1.3 for linux SPARC 版本 求救!硬盘坏了! 晨昏三灌水,早晚一个屁 怎么在EXCEL中用VBA控制图表的位置? Delphi确实很好,学了好几年了,但在上海差点没有找到工作,很少有招学Delphi的 关于 VC 6.0 有没有什么补丁,升级文件之类的东西? 高分争解 怎么利用Jsp发邮件? 有谁知道光驱加锁的问题 parodox数据库问题 各位平时用 VC 作东西,都用那些辅助工具?  高分争解 【 http://www.esoftware.com.cn/search.php?condition=%BA%AB%C1%F7%C0%B4%CF%AE&page=1&mode=3 】 JBuilder的使用问题 在VFP中,编程执行SQL语句时,怎样使系统的查询结果不出现? 一个程序流程的问题 为什么当我的SpeedButton的enabled为false时,上面的图标就没有了? 囡囡(baicolt)请进,问你一点事情 简单问题,请赐教 高分相赠!!!:操作系统和SQL SEVER2000都是英文版,用VB连接如何可以正确的输入和显示中文? 则么在程序中得到sql的存储过程的返回值? 请问 VB 6.0 有没有最新的升级文件之类的东西?高分争解 谢谢 谁有用java做的复杂一点的图行界面的例子 网管来看看,为什么不能给分了!右边的文本框又不见了! 各位用 VB 编程都用那些辅助工具? 高分争解 关于ShellExecute 装了redhat7,在/etc里没有inetd.conf文件,谁见过这咋整 菜鸟请教大侠!很急!谢谢!!只有10分对不起! 请问一个关于CLASSWIZARD 的问题 这里有PB反编译程序,你信吗? 怎样解 关于大数据量的问题,经验丰富者里面谈! 我想在程序里控制程序外的浏览器窗口资源管理器窗口,怎么做呢?急呀!!!!!! 请问:我用JavaMail收下的邮件主题,发信人姓名不能正常显示。。。。。 认识我的人都进来跟我聊聊吧,我最近新换了工作,还没有适应,你们各位是怎么换工作? 请问如何在Delphi中表示二进制,或者十六进制数呢? 各位35以后干什么?我们能干什么? ????? 如何将eltree中的数据和某数据表关联 有没有比RECORDCOUNT快的方法实现同样的功能? 鉴于目前有些东西说话不知轻重,把这个旧闻再贴一遍,不要以为真的在网上 “没人知道你是一只狗” Java 工具 怎样解决vb中编译成exe文件中出现的问题? 你别说国企,只要是沾的国企的气味就他妈的黑! api函数我不懂。 我要开发一个网络监听的程序,捕获所有以太网中所有的帧,象NT和Win2000中的网络监视器一样 找了半天,看不到一个熟人,认识的过来报到 下表记录了一次实验中时间与温度的数据时间/min 0 5 10 15 20 25 温度/ 10 25 40 55 70 85 1.如果温度的变化是均匀的,21min时的温度是多少?2.什么时间的温度是34摄氏度? 某课外活动小组的同学在实验室做锌和浓硫酸反应的实验.(其反应方程式为Zn+2H2SO4(浓)== ZnSO4+SO2+H2O )甲同学认为产生的气体中只有SO2,乙同学认为除SO2外,还可能有H2.为了验证甲、乙两同学的 化学粗盐提纯除 泥沙 硫酸盐 MgCl2 CaCl2的步骤及现象 为探究PH值对唾液淀粉酶活性的影响,某同学设计的实验步骤如下表 (两题不会做求帮忙) 化学:摩尔浓度为多少的硫酸才是浓硫酸? 如果要除去粗盐中含有的可溶性杂质CaCl2(氯化钠),MgCl2(氯化镁)及一些硫酸盐,按下表所示顺序,应加入什么剂 下表是某小组探究“过氧化氢酶的活性是否受pH影响”的实验,请依据设计的实验操作步骤,回答下列问题:(1)本实验的因变量是____,可观测的指标是____. (2)上述操作步骤中存在明显的缺陷,请写 某班参加数学课外活动小组的有22人,参加物理课外活动小组的有18人,参加化学课外活动小组的16人,至少参加一科课外活动小组的有36人,则三科课外活动小组都参加的同学有多少人?{A∪B∪C}={A} 粗盐中含可溶性CaCl2,MgCl2及一些硫酸盐粗盐中含可溶性CaCl2、MgCl2及一些硫酸盐除去这些杂质的试剂可选用①Na2CO3、②NaOH、③BaCl2、④ HCl 加入的先后顺序可以是 A①②③④ B②③①④ C②①③ 为验证pH对唾液淀粉酶活性的影响,某学生设计了下表中的实验方法步骤.在同学们提出的下列评价中,不合理的是项目 试管1 试管21 加入可溶性淀粉溶液 2mL 2mL2 加入新鲜唾液淀粉酶溶液 1mL 1mL3 用海带制取碘的化学实验1.本实验的原理2.实验前为什么要用刷子而不用水冲干海带3.碘单质易升华,为什么还可以用酒精灯灼烧干海带4.能否用氯水代替稀硫酸和双氧水 除杂:Na2SO4,MgCl2,CaCl2,如果用BaCl2,NaOH,NaCO3除,最后不是还有Ba离子吗?那应该怎么才可以完全除去就按照这个顺序除 在测定唾液淀粉酶活性时,将溶液PH由2上升到6过程中,该酶活性将? 某化学课外活动小组以海带为原料获得少量碘水,并以CCl4为溶剂将碘从碘水中提取出来.具体过程如下图所示则:操作①的名称是 ,在操作过程中使用到的玻璃仪器有 .操作②中发生反应的化学 6.粗食盐中常含CaCl2、MgCl2、Na2SO4等杂质,需按一定顺序加入NaOH溶液、Na2CO3溶液、 BaCl2溶液和盐酸(A.Na2CO3、BaCl2、NaOH、HCl B.NaOH、BaCl2、Na2CO3、HCl C.BaCl2、NaOH、HCl、Na2CO3 D.BaCl2、Na2CO3、HCl 某同学为了探究pH对人唾液淀粉酶活性的影响,设计如下实验步骤:①在A、B、C、D、E5支试管中分别加入pH5.0、6.0、7.0、8.0、9.0的适宜浓度缓冲液5mL,再分别加入质量分数为1%的淀粉液1mL.②各试 用海带为原料制取少量碘水,现用CCI4从碘水中萃取碘并用漏斗分离两种溶液,实验过程操作如下:A:把盛有溶液的分液漏斗放在铁架的铁圈中;B:把500ml碘水和15mlccl4加入分液漏斗中,并改好玻 粗盐的除杂 杂质Na2SO4,MgCl2 试剂 Na2CO3,NaOH,BaCl2,HCl 答案是BaCl2,NaOH,Na2CO3,HCl既然Na2CO3也可以沉淀MgCl2,那加NaOH不是可以去掉吗? 以下各项措施中,可以消除分析测试中的系统误差的是().A、进行仪器校正 B、增加测定次数 C、增加称样量 D、提高分析人员水平 我做实验时,为什么煮得的提取液是浓浓的黑色(像煲中药似的)?反复过滤后仍无法得到澄清透明的液体?海带的用量过多会有影响吗? 粗盐有MgCl2,CaCl2,Na2SO4用NaOH,Na2CO3,BaCl2过量之后加适量盐酸除去,为何氯化钡要放在碳酸钠之前? 直流电桥(惠斯通电桥)测电阻的实验误差主要来源是什么?我们在实验中采取了什么措施来减小这种误差?还可以采用哪些方法来减小这种误差? 如何用化学的方法从海带中提取碘 过滤后的食盐水仍含有可溶性的CaCl2、MgCl2、Na2SO4 等杂质,通过如下几个实验步骤,可制得纯净的食盐水:① 加入稍过量的Na2CO3溶液;② 加入稍过量的NaOH溶液;③ 加入稍过量的BaCl2 溶液;④ 在真正做实验时逐差法能减少误差吗?比如一条纸带有O、A、B、C、D、E、F七个计数点.相邻两点的距离记为S1、S2、S3、S4、S5、S6.根据逐差法的公式,有:a=[(s4+s5+s6)-(s1+s2+s3)]/9T^2问题来了.在实验 为了除去粗盐中的CaCl2,MgCl2,Na2SO4及泥沙等杂质,某同学设计了一种制备精盐的实验方案,如图:1.在第4步和第六步中,写出所有反应的方程式2.判断BaCl2已过量的方法: 过滤后的食盐水仍含有可溶性的CaCl2、MgCl2、Na2SO4 等杂质,通过如下几个实验步骤,可制得纯净的食盐水:① 加入稍过量的Na2CO3溶液;② 加入稍过量的NaOH溶液;③ 加入稍过量的BaCl2 溶液;④ 牛顿环实验采取什么方法消除误差 如何除去粗盐中的可溶性杂质CaCl2,MgCl2,Na2So4等,得到较纯的食盐?加入的顺序为BaCl2、NaOH、Na2CO3 为什么是这个顺序? 除去食盐中的CaCl2,MgCl2,及Na2SO4,可否按照,1,BaCl2;2,Na2CO3;3,NaOH;4,HCl的顺序进行?如果不行,why? 为了减小测量遏止电压的误差,在实验过程中应采取哪些措施 如何提纯含泥沙、MgCl2、CaCl2、Na2SO4的粗盐为原料提取NaCl的固体的工艺流程图 急用 一氧化碳的物理性质为?化学性质为?煤气是一种重要的燃料,它的主要成分是一氧化碳,煤气是一种没有颜色、没有气味的气体,日常生活中为了防止煤气中毒,常在煤气中加入少量有强烈 酒精检测 实验方案设计!设计方案 和 氧化反应啥的忘记说了 还要配图 T T 如何除去NaCl中所含的Na2SO4、MgCl2、CaCl2按顺序写出所加试剂及相应的方程式. 求一氧化碳的物理性质四条和化学性质两条~ 实验方案设计的疑问下列实验方案设计正确的是A、分解高锰酸钾制氧气后,残留在试管内壁上的黑色物质可用稀盐酸洗涤B、失去标签的硝酸银溶液、稀盐酸、氢氧化钠溶液、氯化铝溶液可选 怎样除去粗盐中的Mgcl2和Cacl2啊? 一氧化碳具有什么特性 探究生物学问题时,在确定了课题后进行实验方案设计的主要依据是……发现的现象\观察结果/假设/得出的结论 氯化钠是日常生活的必需品,也是重要的化工原料.(1)粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质.以下是粗盐提纯的操作流程.提供的试剂:Na2CO3溶液、K2CO3溶液、NaOH溶液、BaCl2 一氧化碳具有还原性,是什么变化性质(物理, 生物遗传实验设计方案 氯化钠是日常生活的必需品,也是重要的化工原料..在滤液中加盐酸的作用是( ).1)粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质。以下是粗盐提纯的操作流程。提供的试剂:N 一氧化碳具有还原性是什么性质(物理还化学) 实验如下:目的:探究不同烟草浸出液对金鱼的毒害.实验要分三组:分别为红塔山牌、石狮牌和普通烟草的一定浓度的浸出液对金鱼的毒害作用.希望帮忙设计一个实验报告.包括实验过程说 食盐是日常生活的必需品,也是重要的化工原料.粗食盐常含有少量K+、Ca2+、Mg2+、Fe3+、SO42-等杂质离子,实验室提纯NaCl的流程如下按滴加顺序依次为Bacl2,NaoH,Na2CO3.为什么Na2CO3要最后滴加?放在Bacl 一氧化碳具有还原性质么? 谁有高中生物全部实验的总结,急需! (2011•津南区一模)氯化钠是日常生活的必需品,也是重要的化工原料.粗盐除含NaCl外,还含有少量MgCl2、CaCl2、Na2SO4以及泥沙等杂质.以下是粗盐提纯的操作流程.提供的试剂:Na2CO3溶液 一氧化碳和二氧化碳有什么共同性质 科学实验设计方案证明.的事业1实验目标:.2.实验器材.3.4.实验现象.5.试验推理.6试验结论. 化学某课外活动小组从实验室取出硫酸试剂,试剂瓶上标签的部分内容如下图所示.该小组欲用此硫酸试剂配制450ml0.2mol/L的稀H2SO4溶液 化学纯(cp)(500ml) 品名:硫酸 h2so4 相对分子质量:98 密度: 如何除去NaCl中的MgCl2和CaCl2? 某学生实验过程中获得以下数据,不合理的是A.用10ml的量筒量取了8.5ml浓硫酸B.用托盘天平称得某大理石样品质量为23.5gC.用pH试纸测定某工厂排放的污水pH=5.20D.测的某粗盐中氯化钠的质量分数 某化学课外活动小组从实验室取出硫酸试剂,试剂瓶上标签的部分内容如图所示.该小组欲配制450mL0(1)所需试剂瓶内硫酸溶液的体积为________mL.为什么不能用质量守恒V=0.45L*0.2mol/L*98/1.84g·cm-3为 要除去粗盐中含有的杂质cacl2、mgcl2及一些硫酸盐,所加试剂顺序可以颠倒吗?书上是先加bacl2,然后naoh.最后na2co3. 你认为下列实验测得的数据不合理的是( ).A用pH试纸测得某河水的pH值为6.24.B用托盘天平称得氧化铜粉末的质量为11.5g.C用10ml量筒取8.5ml的溶液.D测得某粗盐中氯化钠的质量分数为90.5%.请告诉 现有失去标签的相同体积的两瓶液体,一瓶是98%的浓硫酸,另一瓶是10%的稀硫酸,请你用学过的物理和化学 高一化学必修一第一单元粗盐中含可溶性CaCl2、MgCl2及一些硫酸盐,除去这些杂质的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn