HTML DOM Element并不是单纯的tag,也并非是只是拿来描述layout,他是组件的堆栈
DOM Element在浏览器的内存内会形成一种结构,而结构会形成你的画面。相对于在早期撰写Ajax来使用server side rendering来更新部分画面,现在是实时地更新一组「画面上的组件」。所有你在撰写SPA的时候会做的事情就是「操纵一组DOM Element」。
画面并非平面的概念,而是具有层次的
以往div还有人在使用z-index来切换图层。然而透过jquery,这些仅仅只是show和hide的概念。你可以将画面层迭,也可以切换,混合特效来做完美的衔接。
善用Model Class来加速你的数据取得与减少程序代码
即 便你不需要Controller与View的帮助,让你想象服务器端的资料只要透过几行程序代码的定义,就可以「与浏览器同步」,那接下来不管怎样也是一件 轻松且令人开心的工作。也就是说,在client side model class就是server side model class的proxy。当然在这个情况之下,中间的数据传输可能就是透过RESTful API,或是单纯的HTTP GET来取得JSON Data。最近有朋友讨论到RESTful这个字眼,看起来这个字眼可能还是造成一些误解所以在此说明。RESTful简单来说指的就是利用HTTP GET/POST/PUT/DELETE来对某个URL所代表的资源进行CRUD的操作,而与这个资源用怎样的数据格式传送并没有关系。但由于JSON总 是比XML好用,也因此可能造成一些误会,使用JSON进行HTTP GET就是RESTful。
符合需求,你需要更好的UI设计
所 谓的直觉并非是你自己想的到或是老板告诉你的直觉,想当然尔每个人的直觉都不同,每个人觉得简单也都不同。直觉是你要熟知用的人是谁,去跟他们访谈,了解 他们的习性,清楚他们的工作习性与目标,设计减少他们工作量的UI,这样他们就会很喜欢,也会说你的UI很「直觉」。如果你是设计Web app的人,那更必须清楚大家怎样用浏览器的。你真的确定写Web app只是把一格一格的东西放入浏览器?没有更好的作法了?
善用SPA本身的优势,尽量不要重新读取,也要善用快取
SPA 的观念就是将所有javascript程序代码加载到浏览器的内存,被浏览器解析后开始执行。多亏了现代浏览器善用bytecode来加速执行的好处,只 要你的程序代码在服务器端没有更新,你根本可以将SPA视作就像Adobe Air一样的平台,下载后就开始执行。由于是直接使用javascript,html及css,相对地很好做混搭(mashups)。既然是一次性地将程 式码加载并且执行,就必须使用javascript history来控制上一页下一页的动作,所谓的页面切换也不过是DIV切换。所有静态的数据,例如图片,CSS等,应该优先加载。也必须检查好web server有没有设定好快取,即使是json数据,只要没有更新的数据就不该重新读取。接着就只要从server读取json数据即可,这样来让浏览更 加顺畅。