精华帖 (15) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-18
一直以来,表现层的开发在Web应用的讨论中似乎总是一个小角色。Java的开发者们热烈讨论着的Spring、Hibernate、Struts、WorkWeb也都跟它没有什么关系。技术专家们甚至理直气壮的喊出了Web表现层应当“As thin as possible”口号,于是越来越多人们开始笃信有关业务逻辑的开发技术是武学之正宗,而表现层的开发技术不过是些旁门左道、花拳绣腿。 其实AJAX即不是新技术也不是很复杂的技术,它不过是基于WEB的RIA应用中的一个操作特性(或技术特性)而已。AJAX只有结合了Widget(指各种各样的界面组件)之后才能真正的发挥威力。尽管如此AJAX的诞生仍然不啻为革命性的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-19
原创的话,支持加精。
|
|
返回顶楼 | |
发表时间:2008-09-19
这是06年程序员上的老文了 启发很大 谢谢Ben!
|
|
返回顶楼 | |
发表时间:2008-09-19
本文载于《程序员》杂志2006年10月刊的特别策划“Web开发之华山论剑”之中。参见:《程序员》杂志2006年10月刊 —— 《Web表现层——跑完龙套唱主角》 相对今时今日来说,这篇文章的前瞻性才表现出来. 想想2006年10月的时候,正是业务逻辑框架大行其道的时候(其实现在也是),作者有这样的眼光,不能不让人佩服. 但是作者仍旧没有摆脱框架的束缚 MVC就是典型的框架开发模式造成的技术. 其实MVC仅仅是一种思想,他阐述的是开发中的几个重要元素而没有固定的实现方式, 很多人再讨论MVC的时候都是划出一个个的框框,并常常是MVC完整的存在于客户端,或者服务器端.这有太明显的固定模式化的痕迹.这是不对的. 而且这种思想对作者产生了很大的影响: 写道
1. 以内容为中心的交互。即通过AJAX传递内容的是HTML。
2. 以脚本为中心的交互。即通过AJAX传递内容的是可用于执行的脚本。 3. 以数据为中心的交互。即通过AJAX传递内容的是用于展现的数据。 事实上我们也可以认为这就是AJAX应用发展的三个阶段。因为从“内容”到“脚本”到“数据”的发展过程意味着我们必须为表现层提供越来越多的基础代码和
框架支持。每一个阶段的抽象度都高于前一个阶段。最终的目的就是实现UI组件和数据的彻底分离,这一目的正是MVC所倡导的数据与表现的分离。目
前,由于AJAX诞生的时间还不长,所以很多AJAX的应用还处于相对简单的“以内容为中心”的阶段。这种交互又被成为
AJAH(Asynchronous JavaScript and
HTML)。这种开发方式对现有MVC的影响稍小,但能够起到的改善交互性的作用也非常有限。因此只能算作是一种过渡的模式。从发展的角度来看,MIS类
企业Web应用的开发的主流一定会走到“以数据为中心”的阶段。
“以数据为中心”的表现层应用才是真正具有生命力的,以下我们称之为数据模型驱动型表现
层。
这就是影响的结果: 作者作者希望 最终的目的就是实现UI组件和数据的彻底分离 认识到 目 前,由于AJAX诞生的时间还不长,所以很多AJAX的应用还处于相对简单的“以内容为中心”的阶段........这种开发方式对现有MVC的影响稍小,但能够起到的改善交互性的作用也非常有限 所以 因此只能算作是一种过渡的模式........MIS类 企业Web应用的开发的主流一定会走到“以数据为中心”的阶段 这些我都认同.可是作者给出的server端的设计中V(表现层)仍然存在.作者仍然没有逃出大而全框架的思路 在2006年的时候我也是刚刚进入web开发这一行,也仅仅是模糊的认识到作者提到的这些知识,不过今年我感觉对解决这些问题有些眉目了,那就是把V(表现层)彻底放到客户端做,server只负责数据的处理,当然控制器这个概念是无处不在的,控制器体现的就是业务逻辑了. 而完成这个的方法很简单就是用前台模板工具完成.也就是我开发的jCT: JavaScript Common Templates ----- JavaScript 前台模板看看我现在写的关于查询的后台都写些什么吧: function manhua_new(){//最新 manhuaquery(); } function manhua_update(){//最新更新 manhuaquery(); } function manhua_lianzai(){//连载更新 manhuaquery(); } function manhua_huajiupdate(){//画集更新 manhuaquery(); } function manhua_bizhiupdate(){//壁纸更新 manhuaquery(); } function manhua_yuanchuangupdate(){//原创更新 manhuaquery(); } function manhua_yuanchuangtop(){//原创排名 manhuaquery(); } function manhua_jingpintop(){//精品漫画排名 manhuaquery(); } function manhua_tuijian(){//推荐 manhuaquery(); } function manhua_hotlist(){//点击排名 manhuaquery(); } function manhua_coollist(){//点击排名 manhuaquery(); } function manhua_mhlist(){//漫画列表 global $P,$Q; manhuaquery(); se_Msg($P,'.OPT'); } function manhua_info(){//单条信息 manhuaquery(true); } function manhuaquery($single=false){//通用查询 global $DB,$SESSION,$P; $fields='id,utime,mouse,gengxin,user_id,name,fenlei_id,bieming,zuozhe,zt,ghost,jieshao'; $order=SQL_Order($P['OPT'],'ORDER BY id DESC'); $limit=SQL_Limit(&$P['OPT'],50); $where=$DB->where($P,true); if(!$single and !$P['OPT']['count']){ $P['OPT']['count']=$DB->count('manhua',$where); } if($where) $where="WHERE $where"; $sql="SELECT $fields FROM manhua $where $order $limit;"; $DB->query($sql,$out,$single); se_Msg($out); } 而且事实上,后台的所有代码几乎都可以类库化标准,上面的代码也可以进一步优化,因为这是我思路成熟后的第一次实作有些东西先破费些代码方便修改,这为后台代码本地机器码化提供了可能,因为要处理的数据太模式化了. 这就是应用前台模板后的改变. |
|
返回顶楼 | |
浏览 3585 次