标题并没有很好地表达想要讲述的内容,但是想不到更好的标题了,凭空创造新名词更不合适,所以,将就着看内容吧。
自从窗口化的图形界面出现以来,用户界面的设计都遵循着这样一个原则:把功能划分成块,对应到每一个窗口(开发工具中一般称为Form)中。这些功能块的划分都是遵循用户习惯的,一般不会出现以下两种极端:
极端1:哪怕一个细微的变更(例如用户点击按钮)都会产生一个新窗口;
这两种极端都会严重地违背用户的习惯导致极其不舒适的感觉。所幸习惯所带来的图形界面库以及开发工具对开发人员起到了正确的引导作用,使得这两种极端在传统图形界面程序中基本找不到的。
但是进入到Web领域,一切都开始迷糊了。
早期Ajax没有出现之前,Web页面与服务器交互只有超链接和表单提交两种方式,每一次交互都会产生新的页面,虽然新页面可能会和旧页面很像(例如表格新增了一行),但依旧是新页面。渐渐人们发现这样做会凭白无故给服务器增加很多不必要的负担,本来只需要交互数据就可以了,为什么额外重复地产生页面?此后浏览器端JavaScript绘制页面以及Ajax大行其道,解决了这个问题。
迷糊的程序员们尝到了甜头,接下来就开始异想天开了:既然JavaScript这么好,索性整个项目的界面就做成单页面吧,用JavaScript做窗口、对话框以及各种各样可拖曳的控件,然后就出现了诸如ExtJS这样的高仿重量级框架。
在我看来,这明显是从极端1走到了极端2,如果说极端1还情有可原,因为早期技术限制不得已而为之,那么极端2只能归罪于开发人员的犯傻。
Web的表现形式虽然和传统图形界面不一样,但是内在的本质确是关联的,简单讲,一个页面就对应一个窗口(Form),页面动作可以跳转到新窗口,也可以刷新当前页面,但都应该遵循与传统图形界面一样的习惯性原则,也就是功能块的划分一定要适度,不能走两个极端;另外也应该遵循Web特有的习惯,不要试图把界面弄得跟Windows一样,甚至窗口都能拖动,这样会让用户感觉很怪异的。
一个良好的Web应用应该按照功能划分为多页面,而单个页面与服务器使用Ajax只交互数据而不刷新页面。为了美观,可以适当使用一些“弹出窗口”,但是弹出窗口千万不要可拖动。而应用的各大主页面为了统一风格,可以使用一些模板技术。
所以,开发Web应用前端,一个模板加一个Ajax足矣,剩下就看你的设计功夫了。
原文:http://my.oschina.net/mallon/blog/521028