- 浏览: 129546 次
- 性别:
- 来自: 杭州
最新评论
-
zhi_nan_7:
做一个软件,需求是这样的:银行软件,需要对(excel)表格 ...
如何应对表结构经常变化? -
GuolinLee:
{A, _int, [B|_int], {B}} = {abc ...
erlang 中带下划线变量的使用 -
mozhenghua:
兄弟有没有啥解决方案呀?
MVC中被忽略的View层 -
ccchenzhong:
仁兄,还有哪边有你的这篇文章可看。如果有,可以给我个链接?或是 ...
javarebel 原理分析--说明 -
lingqi1818:
一晃一年过去了。。。
回顾2010,展望2011
现在市面上这么多的java web 开发框架,struts2,spring mvc,wicket,tapestry,stripes,click....随便列一些就很多了,在web应用开发和维护的时候,我们会关注哪些功能呢?
提到现在的web框架,我们的第一印象是什么?POJO controller?支持spring,支持guice,支持EJB3?至于View呢,我们支持jsp、freemarker、 velocity、JSF、xxx template,view层,也就tapestry有点性格,考虑了一些问题(后来wicket可以认为是"借鉴"他的理念)
大部分的框架,支持模板系统,就宣称我们的业务逻辑和展示是分离的,但是实际操作起来,这个程度上的分离还远远不够,要做好也很困难,但是现在,我需要一个View层的解决方案。
一些经常碰到的问题:
*运营人员说:要修改一个链接和一段文本,因为在一个动态页面里面,需要开发人员来动手,于是在某个应用上(或几个)做分支,修改,测试,预发布,发布
靠,我就改这么点东西,告诉我需要1个工作日,还得申请紧急发布(得老大批准)
*开发人员说:UED的同学怎么又把模板里的一个变量给搞掉了,内容又不正确了(甚至是页面500了)
*法务说:有个推广链接要拿掉,全给我找出来干掉!不然老板要被请去喝咖啡了。
要解决这些问题,我期望的View层能够:
*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子
*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理
*简单直白的开发维护方式
评论
52 楼
mozhenghua
2012-06-19
兄弟有没有啥解决方案呀?
51 楼
youngJiang
2009-09-25
我个人也是比较喜欢wicket的,逻辑层和view层分开的还是比较彻底的
50 楼
myseo
2009-09-24
iaimstar 写道
myseo 写道
iaimstar 写道
我还是比较喜欢servlet直接print代码
每次都得重新编译,很爽?
请把帖子看完,谢谢
哦不好意思,我是说的跟贴子没关系,
我回避吧。谢谢
49 楼
zozoh
2009-09-24
iaimstar 写道
ediwer 写道
个人觉得一个好的项目,在数据库设计上得下狠功夫。
哥你穿越了
哥穿的不是越,哥穿的是寂寞
48 楼
iaimstar
2009-09-24
ediwer 写道
个人觉得一个好的项目,在数据库设计上得下狠功夫。
哥你穿越了
47 楼
kobevaliant
2009-09-24
各位如果想解决view的问题并且有兴趣的话,看一看我的框架吧~
http://note.iteye.com/blog/408958
拥有市面上对html最为友好的模板引擎
http://note.iteye.com/blog/408958
拥有市面上对html最为友好的模板引擎
46 楼
fory
2009-09-24
怎又各数据库扯上了
45 楼
ediwer
2009-09-24
个人觉得一个好的项目,在数据库设计上得下狠功夫。
44 楼
quaff
2009-09-23
night_stalker 写道
我也不喜欢标签呀,我喜欢 haml
看了一下haml,更像model而不是view
43 楼
night_stalker
2009-09-23
我也不喜欢标签呀,我喜欢 haml
42 楼
argan
2009-09-23
san_yun 写道
不晓得为什么大家好像都比较推崇模板,但我一直不喜欢模板鸡肋的开发工具。
而且模板本身也没有本质的好处,无非JSP里面用<%...%>,模板用$,#if,本质是一样的。
我提倡采用一种设计良好的UI标签,比如我们的死对头微软主推的WPF XAML通过定义一种XML隐藏了一些细节的style。
这段代码很简易,一眼就看得出是一个table。
它是一个简单的table,还是带有可以排序,可以动态编辑的的富table呢?
编写view的“客户程序员”并不关心,他只要放心的使用这个table就可以。
另外自定义TAG因为有助手提示编写起来也很简单。
自定义TAG的实际渲染交给我们的“服务程序员”来统一处理。
这样经过良好设计的UI如果要维护table上的样式,或者修改一个链接什么的,简直易如反掌。
view很复杂,模板不适用。至于某些大牛说我就喜欢用HTML,你把我怎么样?
我只好说:我只是小屁民,没法装逼.
而且模板本身也没有本质的好处,无非JSP里面用<%...%>,模板用$,#if,本质是一样的。
我提倡采用一种设计良好的UI标签,比如我们的死对头微软主推的WPF XAML通过定义一种XML隐藏了一些细节的style。
<Grid value="orders"> <GridColum name="id" label="序号" /> <GridColum name="orderName" label="订单名称" /> </Grid>
这段代码很简易,一眼就看得出是一个table。
它是一个简单的table,还是带有可以排序,可以动态编辑的的富table呢?
编写view的“客户程序员”并不关心,他只要放心的使用这个table就可以。
另外自定义TAG因为有助手提示编写起来也很简单。
自定义TAG的实际渲染交给我们的“服务程序员”来统一处理。
这样经过良好设计的UI如果要维护table上的样式,或者修改一个链接什么的,简直易如反掌。
view很复杂,模板不适用。至于某些大牛说我就喜欢用HTML,你把我怎么样?
我只好说:我只是小屁民,没法装逼.
非常同意这句话“view很复杂”,但是从开发这边来看,总是想把他拿在自己手里,或者说是想放出去,但是做不到
41 楼
argan
2009-09-23
SteveGY 写道
>> 你永远不知道哪些东西需要预先用include的方式处理
??? 所有的都“预先知道”是不可能的,但是当同样的内容被复制、粘帖了2次以上还不知道的话,就没什么好说的了
??? 所有的都“预先知道”是不可能的,但是当同样的内容被复制、粘帖了2次以上还不知道的话,就没什么好说的了
如果是我一个人来开发维护一个系统,当然没问题,每个地方我都很清楚,我也可以时不时的去重构一下,但是,当你有若干个应用,每个应用还有至少几十个人去维护,并且每周都会发布几次的时候,这个问题就很难控制了
我这里碰到的不是一个小的应用的问题,而是一个庞大的系统的问题,所以会看起来简单,实际上很麻烦
40 楼
san_yun
2009-09-23
不晓得为什么大家好像都比较推崇模板,但我一直不喜欢模板鸡肋的开发工具。
而且模板本身也没有本质的好处,无非JSP里面用<%...%>,模板用$,#if,本质是一样的。
我提倡采用一种设计良好的UI标签,比如我们的死对头微软主推的WPF XAML通过定义一种XML隐藏了一些细节的style。
这段代码很简易,一眼就看得出是一个table。
它是一个简单的table,还是带有可以排序,可以动态编辑的的富table呢?
编写view的“客户程序员”并不关心,他只要放心的使用这个table就可以。
另外自定义TAG因为有助手提示编写起来也很简单。
自定义TAG的实际渲染交给我们的“服务程序员”来统一处理。
这样经过良好设计的UI如果要维护table上的样式,或者修改一个链接什么的,简直易如反掌。
view很复杂,模板不适用。至于某些大牛说我就喜欢用HTML,你把我怎么样?
我只好说:我只是小屁民,没法装逼.
而且模板本身也没有本质的好处,无非JSP里面用<%...%>,模板用$,#if,本质是一样的。
我提倡采用一种设计良好的UI标签,比如我们的死对头微软主推的WPF XAML通过定义一种XML隐藏了一些细节的style。
<Grid value="orders"> <GridColum name="id" label="序号" /> <GridColum name="orderName" label="订单名称" /> </Grid>
这段代码很简易,一眼就看得出是一个table。
它是一个简单的table,还是带有可以排序,可以动态编辑的的富table呢?
编写view的“客户程序员”并不关心,他只要放心的使用这个table就可以。
另外自定义TAG因为有助手提示编写起来也很简单。
自定义TAG的实际渲染交给我们的“服务程序员”来统一处理。
这样经过良好设计的UI如果要维护table上的样式,或者修改一个链接什么的,简直易如反掌。
view很复杂,模板不适用。至于某些大牛说我就喜欢用HTML,你把我怎么样?
我只好说:我只是小屁民,没法装逼.
39 楼
SteveGY
2009-09-23
>> 你永远不知道哪些东西需要预先用include的方式处理
??? 所有的都“预先知道”是不可能的,但是当同样的内容被复制、粘帖了2次以上还不知道的话,就没什么好说的了
??? 所有的都“预先知道”是不可能的,但是当同样的内容被复制、粘帖了2次以上还不知道的话,就没什么好说的了
38 楼
iaimstar
2009-09-22
<div class="quote_title">argan 写道</div>
<div class="quote_div">
<div class="quote_title"><span style="font-weight: normal;"><strong><span>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">要解决这些问题,我期望的View层能够:</p>
<p style="padding: 0px; margin: 0px;">*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p style="padding: 0px; margin: 0px;"> </p>
</span></strong></span></div>
</div>
<p>我也一直想知道真正解决问题的方案是什么</p>
<p>jsp吧,标签很方便,但是有种说不出的别扭</p>
<p>不用标签吧,代码可能看了会吐。</p>
<p> </p>
<p>或许能指望html提供一种基于新的html标准标签的解决方案,提供一种标准数据格式规范和处理方案,比如xml或者json</p>
<p> </p>
<p>亦或者我们放弃浏览器,甚至更新成浏览器 2.0,支持新的标准和开发方式</p>
<p> </p>
<p>算了,直接页面里嵌个flash。。比啥都强</p>
<div class="quote_div">
<div class="quote_title"><span style="font-weight: normal;"><strong><span>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">要解决这些问题,我期望的View层能够:</p>
<p style="padding: 0px; margin: 0px;">*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p style="padding: 0px; margin: 0px;"> </p>
</span></strong></span></div>
</div>
<p>我也一直想知道真正解决问题的方案是什么</p>
<p>jsp吧,标签很方便,但是有种说不出的别扭</p>
<p>不用标签吧,代码可能看了会吐。</p>
<p> </p>
<p>或许能指望html提供一种基于新的html标准标签的解决方案,提供一种标准数据格式规范和处理方案,比如xml或者json</p>
<p> </p>
<p>亦或者我们放弃浏览器,甚至更新成浏览器 2.0,支持新的标准和开发方式</p>
<p> </p>
<p>算了,直接页面里嵌个flash。。比啥都强</p>
37 楼
argan
2009-09-22
<div class="quote_title"><span style="font-weight: normal;"><strong><span style="">
<p style="padding: 0px; margin: 0px;">*运营人员说:要修改一个链接和一段文本,因为在一个动态页面里面,需要开发人员来动手,于是在某个应用上(或几个)做分支,修改,测试,预发布,发布</p>
<p style="padding: 0px; margin: 0px;"> 靠,我就改这么点东西,告诉我需要1个工作日,还得申请紧急发布(得老大批准)</p>
<p style="padding: 0px; margin: 0px;">>>如果“动态”页面涉及复杂的业务逻辑、数据库操作,而这些后台的复杂操作只输出一个很简单的结果,你(或老板)只看到这是一个很简单的东西(结果),当然就对需要1工作日的工作量不能理解了。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 我是站在开发这个角度来看的,这里只是说明由开发人员去维护这些页面的</span><span style="color: #ff0000;">别扭</span><span style="color: #0000ff;">,虽然这里描述的流程是复杂了点(真实的流程),是可以删减,但是问题重点不在流程,也不在具体开发什么内容</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*开发人员说:UED的同学怎么又把模板里的一个变量给搞掉了,内容又不正确了(甚至是页面500了)</p>
<p style="padding: 0px; margin: 0px;">>>呵呵,这个。。。废话嘛,没了一个变量,除非它本来就未被程序使用,否则要是程序依然可以正常工作,那叫灵异事件。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 同样的,这里要说明的也只是UED的同学去动这些有程序逻辑/变量的模板的苦难所在</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*法务说:有个推广链接要拿掉,全给我找出来干掉!不然老板要被请去喝咖啡了。</p>
<p style="padding: 0px; margin: 0px;">>>嗯,这个嘛,仔细的设计你的模板,恰当的使用include技巧,可以不用修改全部页面,只要修改被include的块就解决了,但总有人轻视include原则的。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 你永远不知道哪些东西需要预先用include的方式处理,事先能想到的头啊尾啊,常见的公用地方都已经类似处理过了,这里只是说明现在的方式处理一些突发的事件很繁琐,不过这个提法本身可能就有些问题,又想不事先知道,又想随时想改就改,呵呵,我太贪婪了</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">要解决这些问题,我期望的View层能够:</p>
<p style="padding: 0px; margin: 0px;">*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p style="padding: 0px; margin: 0px;">>>不知道你在说什么,这个是View层提供的功能?还是设计、编码人员大脑中应该时刻遵循的原则?我想至少jsp和jstl早就提供了工具分离逻辑和显示了,但如果你们一定要在jsp中写scriptlet,也没有人拦得住你的。所以,还是大脑中的规则比较重要吧。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>>看来没看明白我前面描述的问题,我没觉得jsp/jstl分离的有多好</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理</p>
<p style="padding: 0px; margin: 0px;">>>没有看懂,你对“很好的抽象和管理”的定义是什么?</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 结合前面的运营人员和法务的案例去推测吧,挺难描述的</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
</span></strong></span></div>
<p style="padding: 0px; margin: 0px;">*运营人员说:要修改一个链接和一段文本,因为在一个动态页面里面,需要开发人员来动手,于是在某个应用上(或几个)做分支,修改,测试,预发布,发布</p>
<p style="padding: 0px; margin: 0px;"> 靠,我就改这么点东西,告诉我需要1个工作日,还得申请紧急发布(得老大批准)</p>
<p style="padding: 0px; margin: 0px;">>>如果“动态”页面涉及复杂的业务逻辑、数据库操作,而这些后台的复杂操作只输出一个很简单的结果,你(或老板)只看到这是一个很简单的东西(结果),当然就对需要1工作日的工作量不能理解了。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 我是站在开发这个角度来看的,这里只是说明由开发人员去维护这些页面的</span><span style="color: #ff0000;">别扭</span><span style="color: #0000ff;">,虽然这里描述的流程是复杂了点(真实的流程),是可以删减,但是问题重点不在流程,也不在具体开发什么内容</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*开发人员说:UED的同学怎么又把模板里的一个变量给搞掉了,内容又不正确了(甚至是页面500了)</p>
<p style="padding: 0px; margin: 0px;">>>呵呵,这个。。。废话嘛,没了一个变量,除非它本来就未被程序使用,否则要是程序依然可以正常工作,那叫灵异事件。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 同样的,这里要说明的也只是UED的同学去动这些有程序逻辑/变量的模板的苦难所在</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*法务说:有个推广链接要拿掉,全给我找出来干掉!不然老板要被请去喝咖啡了。</p>
<p style="padding: 0px; margin: 0px;">>>嗯,这个嘛,仔细的设计你的模板,恰当的使用include技巧,可以不用修改全部页面,只要修改被include的块就解决了,但总有人轻视include原则的。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 你永远不知道哪些东西需要预先用include的方式处理,事先能想到的头啊尾啊,常见的公用地方都已经类似处理过了,这里只是说明现在的方式处理一些突发的事件很繁琐,不过这个提法本身可能就有些问题,又想不事先知道,又想随时想改就改,呵呵,我太贪婪了</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">要解决这些问题,我期望的View层能够:</p>
<p style="padding: 0px; margin: 0px;">*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p style="padding: 0px; margin: 0px;">>>不知道你在说什么,这个是View层提供的功能?还是设计、编码人员大脑中应该时刻遵循的原则?我想至少jsp和jstl早就提供了工具分离逻辑和显示了,但如果你们一定要在jsp中写scriptlet,也没有人拦得住你的。所以,还是大脑中的规则比较重要吧。</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>>看来没看明白我前面描述的问题,我没觉得jsp/jstl分离的有多好</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;">*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理</p>
<p style="padding: 0px; margin: 0px;">>>没有看懂,你对“很好的抽象和管理”的定义是什么?</p>
<p style="padding: 0px; margin: 0px;"> </p>
<p style="padding: 0px; margin: 0px;"><span style="color: #0000ff;">>> 结合前面的运营人员和法务的案例去推测吧,挺难描述的</span></p>
<p style="padding: 0px; margin: 0px;"> </p>
</span></strong></span></div>
36 楼
argan
2009-09-22
jansel 写道
UI层本身变化很大,所以UI要形成一个通用的很难。通过看各个框架提供的Tag就知道了,只能处理数据,布局是很难搞的。
所以只要有Tag,那么肯定会和HTML Tag混合起来用,这样维护就成问题了。
个人还是喜欢Wicket的简介的方式,UI就交给HTML了。
所以只要有Tag,那么肯定会和HTML Tag混合起来用,这样维护就成问题了。
个人还是喜欢Wicket的简介的方式,UI就交给HTML了。
wicket和tapestry处理方式非常类似,也是我看到的相当优雅的一种方式了,这基本能解决模板的问题了
不过我考虑的还有其他静态资源的管理问题,比如js,css,图片资源,这些都需要在我们的模板里面去引用,如果要修改一个js/css/image,我必须检查所有可能引用的地方,否则也不敢乱动
据ebay的一些文档描述的样子看来,他的V4已经能很好的管理这些资源了,不过看起来很复杂,可以参考 http://www.ibm.com/developerworks/cn/opensource/os-eclipse-ebay1/ 还有 http://yiminghe.iteye.com/blog/427337
且不说他的解决方案如何,至少要解决的问题是类似的,这个问题困扰了我很久,一直没有很好的方案
我期望的最终目标是将展示*完全*交给UED部门和运营部门,开发不用关心,开发和UED之间只有一种约定,或者定义一种自己特有的DSL,供UED来使用,这个DSL不是模板,是业务的一些标签,或者标记
供yy,也表达一下我本来的意思
35 楼
SteveGY
2009-09-22
<div class="quote_title">argan 写道</div>
<div class="quote_div">
<p>现在市面上这么多的java web 开发框架,struts2,spring mvc,wicket,tapestry,stripes,click....随便列一些就很多了,在web应用开发和维护的时候,我们会关注哪些功能呢?</p>
<p> </p>
<p>提到现在的web框架,我们的第一印象是什么?POJO controller?支持spring,支持guice,支持EJB3?至于View呢,我们支持jsp、freemarker、 velocity、JSF、xxx template,view层,也就tapestry有点性格,考虑了一些问题(后来wicket可以认为是"借鉴"他的理念)</p>
<p> </p>
<p> </p>
<p>大部分的框架,支持模板系统,就宣称我们的业务逻辑和展示是分离的,但是实际操作起来,这个程度上的分离还远远不够,要做好也很困难,但是现在,我需要一个View层的解决方案。</p>
<p> </p>
<p>一些经常碰到的问题:</p>
<p>*运营人员说:要修改一个链接和一段文本,因为在一个动态页面里面,需要开发人员来动手,于是在某个应用上(或几个)做分支,修改,测试,预发布,发布</p>
<p> 靠,<span style="color: #ff00ff;">我就改这么点东西</span>,告诉我需要1个工作日,还得申请紧急发布(得老大批准)</p>
<p><span style="color: #ff0000;">>>如果“动态”页面涉及复杂的业务逻辑、数据库操作,而这些后台的复杂操作只输出一个很简单的结果,你(或老板)只看到这是一个很简单的东西(结果),当然就对需要1工作日的工作量不能理解了</span><span style="color: #ff0000;">。</span></p>
<p>*开发人员说:UED的同学怎么又把模板里的一个<span style="color: #ff00ff;">变量给搞掉了</span>,内容又不正确了(甚至是页面500了)</p>
<p><span style="color: #ff0000;">>>呵呵,这个。。。废话嘛,没了一个变量,除非它本来就未被程序使用,否则要是程序依然可以正常工作,那叫灵异事件。</span></p>
<p>*法务说:有个推广链接要拿掉,全给我找出来干掉!不然老板要被请去喝咖啡了。</p>
<p><span style="color: #ff0000;">>>嗯,这个嘛,仔细的设计你的模板,恰当的使用include技巧,可以不用修改全部页面,只要修改被include的块就解决了,但总有人轻视include原则的。</span></p>
<p> </p>
<p>要解决这些问题,我期望的View层能够:</p>
<p>*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p><span style="color: #ff0000;">>>不知道你在说什么,这个是View层提供的功能?还是设计、编码人员大脑中应该时刻遵循的原则?我想至少jsp和jstl早就提供了工具分离逻辑和显示了,但如果你们一定要在jsp中写scriptlet,也没有人拦得住你的。所以,还是大脑中的规则比较重要吧。</span></p>
<p>*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理</p>
<p><span style="color: #ff0000;">>>没有看懂,你对“很好的抽象和管理”的定义是什么?</span></p>
<p>*简单直白的开发维护方式</p>
<p><span style="color: #ff0000;">>>呵呵,我曾经有一个同事,那时是在2000年,他是我们销售总监的同学。他来到我们公司,一开始的愿望是做一个程序员,他说:“你看,我这样……再这样……,拖拉几个输入框、下拉列表框,图形背景……,你看,这个‘程序’就可以运行了,很简单的,而且很漂亮。做程序员真是太酷了……”。当然,2周以后,他还是去做销售了……</span></p>
<p> </p>
</div>
<p>好吧,关于最后的那个同事的故事,大家不要对号入座,开个玩笑的<img src="/images/smiles/icon_biggrin.gif" alt=""></p>
<div class="quote_div">
<p>现在市面上这么多的java web 开发框架,struts2,spring mvc,wicket,tapestry,stripes,click....随便列一些就很多了,在web应用开发和维护的时候,我们会关注哪些功能呢?</p>
<p> </p>
<p>提到现在的web框架,我们的第一印象是什么?POJO controller?支持spring,支持guice,支持EJB3?至于View呢,我们支持jsp、freemarker、 velocity、JSF、xxx template,view层,也就tapestry有点性格,考虑了一些问题(后来wicket可以认为是"借鉴"他的理念)</p>
<p> </p>
<p> </p>
<p>大部分的框架,支持模板系统,就宣称我们的业务逻辑和展示是分离的,但是实际操作起来,这个程度上的分离还远远不够,要做好也很困难,但是现在,我需要一个View层的解决方案。</p>
<p> </p>
<p>一些经常碰到的问题:</p>
<p>*运营人员说:要修改一个链接和一段文本,因为在一个动态页面里面,需要开发人员来动手,于是在某个应用上(或几个)做分支,修改,测试,预发布,发布</p>
<p> 靠,<span style="color: #ff00ff;">我就改这么点东西</span>,告诉我需要1个工作日,还得申请紧急发布(得老大批准)</p>
<p><span style="color: #ff0000;">>>如果“动态”页面涉及复杂的业务逻辑、数据库操作,而这些后台的复杂操作只输出一个很简单的结果,你(或老板)只看到这是一个很简单的东西(结果),当然就对需要1工作日的工作量不能理解了</span><span style="color: #ff0000;">。</span></p>
<p>*开发人员说:UED的同学怎么又把模板里的一个<span style="color: #ff00ff;">变量给搞掉了</span>,内容又不正确了(甚至是页面500了)</p>
<p><span style="color: #ff0000;">>>呵呵,这个。。。废话嘛,没了一个变量,除非它本来就未被程序使用,否则要是程序依然可以正常工作,那叫灵异事件。</span></p>
<p>*法务说:有个推广链接要拿掉,全给我找出来干掉!不然老板要被请去喝咖啡了。</p>
<p><span style="color: #ff0000;">>>嗯,这个嘛,仔细的设计你的模板,恰当的使用include技巧,可以不用修改全部页面,只要修改被include的块就解决了,但总有人轻视include原则的。</span></p>
<p> </p>
<p>要解决这些问题,我期望的View层能够:</p>
<p>*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子</p>
<p><span style="color: #ff0000;">>>不知道你在说什么,这个是View层提供的功能?还是设计、编码人员大脑中应该时刻遵循的原则?我想至少jsp和jstl早就提供了工具分离逻辑和显示了,但如果你们一定要在jsp中写scriptlet,也没有人拦得住你的。所以,还是大脑中的规则比较重要吧。</span></p>
<p>*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理</p>
<p><span style="color: #ff0000;">>>没有看懂,你对“很好的抽象和管理”的定义是什么?</span></p>
<p>*简单直白的开发维护方式</p>
<p><span style="color: #ff0000;">>>呵呵,我曾经有一个同事,那时是在2000年,他是我们销售总监的同学。他来到我们公司,一开始的愿望是做一个程序员,他说:“你看,我这样……再这样……,拖拉几个输入框、下拉列表框,图形背景……,你看,这个‘程序’就可以运行了,很简单的,而且很漂亮。做程序员真是太酷了……”。当然,2周以后,他还是去做销售了……</span></p>
<p> </p>
</div>
<p>好吧,关于最后的那个同事的故事,大家不要对号入座,开个玩笑的<img src="/images/smiles/icon_biggrin.gif" alt=""></p>
34 楼
timothy_bitty
2009-09-22
能简洁当然好,尽量使页面简单化,但不要太简单!View层现在的解决方案很多,动态和静态部分的耦合度大小可以取决于项目需求 .
33 楼
iaimstar
2009-09-22
zozoh 写道
iaimstar 写道
要解决这些问题,我期望的View层能够:
*很好的分离逻辑与显示,不是宣称,而是真正解决问题,不过还没想好是什么样子
*动态内容和静态内容很好的分离,静态的资源有很好的抽象和管理
*简单直白的开发维护方式
上面这个这不是我写的。。。
iaimstar 写道
前面说了,东西巨简单,简单到没必要有UI存在的地步,何况
我就是我们公司的美工~~,精通phtoshop丫
页面上的东西有两种:
- 样子
- 逻辑
样子用 HTML/CSS 写, 逻辑用 JS 写。
构建任何界面元素都可这样来划分。
程序员一直在尽量避免把业务逻辑写到页面上,即使是js里面,客户操作流程无所谓
数据来源也有两种:
- 服务器直接渲染出的 HTML
- JS 二次读取的 json/xml/dom 等
根据不同的需求,可以决定某一个界面的数据如何产生,一般的网站主要采用1,结合2。便于SEO。
B/S软件适合 2, 可以让开发更加简化。
在这两个思路基础上,在不同的项目中总结一套自己的 UI 解决方案并不是太难的事情。
我自己也有UI解决方案,用servlet也是有理由的,就像前面说的项目页面非常简单,jsp+include servlet足够了,我没有必要为了一个1个星期需求简单的小玩意整合一个所谓UI组件进去,徒增复杂度,这种情况,程序员看代码更容易清晰
发表评论
-
回顾2010,展望2011
2011-01-06 01:59 2109一晃2010年过去了,看看 ... -
对于web开发框架,我需要什么功能
2009-09-19 19:49 0现在市面上这么多的java web 开发框架,struts2, ... -
没有灵魂的软件不是一个优秀的软件
2009-08-21 21:31 1840我们说不要重新发明轮 ... -
非常讨厌大而全
2009-08-21 21:08 1403有一段时间,我的状态 ... -
昨天更新了ubuntu无法上网的解决
2009-08-05 20:45 4995一时兴起,升级到了ubuntu 9.10 (karmic) b ... -
emacs 23.1 released
2009-07-30 13:54 884Emacs version 23 has a wide va ... -
Django 1.1 released
2009-07-29 15:36 1032Django 1.1 正式release ,详细见 rele ... -
HadoopDB : Hadoop + RDBMS
2009-07-22 14:13 1773HadoopDB 是耶鲁大学的一些研究人员在进行的一个Ope ... -
twitter 的一些运营经验
2009-07-15 09:51 1045http://assets.en.oreilly.com/1/ ... -
我的vim设定
2008-11-18 09:02 1213syntax on " for color set ... -
如何提高缓存服务器的可用性
2009-05-23 23:13 1392上一篇我们讨论到了问题 ,现在我来讲讲我的解决方法。 ... -
关于如何使用内存擦车的
2009-05-23 06:47 1412也学人家来一次标题党 ...
相关推荐
**MVC(Model-View-Controller)模式是软件开发中的一种设计模式,尤其在Web应用开发领域广泛应用。C# MVC是Microsoft为.NET Framework提供的一种基于MVC架构的Web应用程序开发框架。这个“MVC学习视频”教程涵盖了...
在ASP.NET MVC中,Json数据的传输主要涉及到两个关键点:控制器(Controller)和视图(View),以及Ajax请求。 1. 控制器返回Json结果 在控制器方法中,我们可以使用`JsonResult`类来返回Json数据。例如: ```...
在深入探究*** MVC框架的组件时,我们常常会忽略一些底层的细节。但当我们要构建出高效、可维护的应用时,理解这些基础构件就显得至关重要。今天我们将一起深入了解和剖析*** MVC的DependencyResolver组件,这是一个...
在.NET框架中,尤其是在MVC(Model-View-Controller)架构中,它是一个不可或缺的工具,用于序列化和反序列化JSON对象,将C#对象转换为JSON字符串,以及将JSON字符串解析回C#对象。 在C# MVC项目中,JSON处理通常...
1. **.gitignore**:这是一个版本控制配置文件,指示 Git 忽略哪些文件或目录,防止不必要的文件被添加到版本库中,如编译产生的临时文件、日志文件等。 2. **jeasyuimvc.sln**:这是一个 Visual Studio 解决方案...
MVC(Model-View-Controller)是一种流行的软件架构模式,常被应用于Web应用开发中。MVC模式将应用分为三个核心部分:模型(Model)、视图(View)与控制器(Controller)。本文旨在深入探讨MVC中的路由机制及其工作...
ASP.NET MVC5是微软开发的一款用于构建Web应用程序的框架,它是ASP.NET平台的一部分,结合了MVC(Model-View-Controller)设计模式和ASP.NET Web Forms的诸多优点。在这个框架中,蒋金楠是一位知名的讲师,他通过...
在这个例子中,表单数据将被发送到`/Star/Apply`路径对应的控制器和Action方法进行处理。 #### 三、jQuery + Ajax 提交表单 使用jQuery库结合Ajax技术可以实现异步表单提交,这种方式不会刷新整个页面,而是局部...
3. **模型对象到 JSON 的转换**:Jackson 提供了 `@JsonProperty` 和 `@JsonIgnore` 等注解,用于控制哪些字段应该被序列化为 JSON,哪些应该被忽略。在 Model 类中,我们可以使用这些注解来定制序列化和反序列化的...
MVC(Model-View-Controller)是一种软件架构模式,它将应用程序逻辑分为三个核心组成部分:模型(Model)、视图(View)和控制器(Controller)。这种分离有助于简化开发过程并提高代码的可维护性和可扩展性。ASP...
总的来说,这本.NET-MVC英文版书籍是.NET开发者的一份宝贵资源,尽管内容繁多且深入,但对提升.NET MVC技能和理解Web开发的最佳实践有着不可忽视的价值。虽然书的厚度可能会带来一定的阅读挑战,但对于决心投身于...
MVC(Model-View-Controller)设计模式是一种广泛应用于Web应用开发中的架构模式,它将应用程序的业务逻辑、用户界面和数据访问分离开来,使得各部分可以独立工作,提高代码的可维护性和可扩展性。在这个名为"基于...
在这个学生选课系统中,Model部分可能包含如“学生”、“课程”等实体类,以及与数据库交互的DAO(Data Access Object)层,用于执行SQL语句,进行数据的增删改查。这些操作可能通过JDBC(Java Database ...
例如,在下面的示例中,`isbn`参数被标记为可选: ```csharp [Route("books/{isbn?}")] public ActionResult View(string isbn) { if (!String.IsNullOrEmpty(isbn)) { return View("OneBook", GetBook(isbn)); ...
在这个系列课程的第四部分,我们将深入探讨可替换的视图(View)机制,这是MVC框架中的一个重要组成部分。 视图在MVC架构中扮演着呈现数据的角色,它是用户与应用交互的界面。可替换的视图允许开发者根据不同的场景...
在Web应用程序开发中,视图解析是重要一环,而安全性也是不能忽视的部分: - **视图解析**:理解如何在Spring MVC中解析和实现视图,包括JSP、FreeMarker等模板技术的使用。 - **Spring Security**:本书还将介绍...
1. **控制器(Controllers)**:在*** MVC中,控制器负责处理用户输入,并调用模型(Model)层的代码来访问数据,然后将数据传递给视图(View),以生成响应。在高级编程中,将讨论如何创建高级路由、构建动态操作、...
Spring MVC是Spring框架中的一个核心模块,它遵循了MVC(Model-View-Controller,模型-视图-控制器)设计模式。Spring MVC允许开发者构建灵活且可维护的Web应用程序。配置Spring MVC框架是确保Web应用程序能够高效...