﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-五月天山雪-随笔分类-软件工艺</title><link>http://www.blogjava.net/dlee/category/5069.html</link><description>五月天山雪，无花只有寒。笛中闻折柳，春色未曾看。晓战随金鼓，宵眠抱玉鞍。愿将腰下剑，直为斩楼兰。 ——李白《塞下曲》</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 23:34:57 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 23:34:57 GMT</pubDate><ttl>60</ttl><item><title>我们是否应该依赖自动生成的 JavaScript</title><link>http://www.blogjava.net/dlee/archive/2005/11/21/20815.html</link><dc:creator>dlee</dc:creator><author>dlee</author><pubDate>Mon, 21 Nov 2005 11:46:00 GMT</pubDate><guid>http://www.blogjava.net/dlee/archive/2005/11/21/20815.html</guid><wfw:comment>http://www.blogjava.net/dlee/comments/20815.html</wfw:comment><comments>http://www.blogjava.net/dlee/archive/2005/11/21/20815.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/dlee/comments/commentRss/20815.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dlee/services/trackbacks/20815.html</trackback:ping><description><![CDATA[在 WebWork 对于 Ajax 支持的 presentation 中，作者说了这么一句耐人寻味的话：<br>
<p:colorscheme colors="#FFFFFF,#000000,#000000,#FFFFFF,#5B87F2,#555555,#5DA31E,#BAD41A">

</p:colorscheme>
<div v:shape="_x0000_s3074" class="O" style=""><span style="font-family: Arial; font-size: 133%;" lang="EN-US"><b>AJAX is really just a bunch of JavaScript, HTML, and sloppy logic smashed together in a big </b></span><span style="font-family: Arial; font-size: 133%;" lang="EN-US"><b>train wreck!</b></span><span style="display: none;">
</span></div>

并且作者还用粗体加重。<br>
看不懂吗？我来翻译一下：<br>
Ajax 其实不过是一堆 JavaScript、HTML 和膨胀的逻辑混合在一辆巨大的失事火车里面。<br>
<br>
嘿嘿，这就是 WebWork 开发者们对于 Ajax 的看法，那么他们对于 Ajax 的支持方式也就不难理解了。<br>
基本上，传统的 J2EE 开发者对于基于 JavaScript 的技术持有一种发自内心的轻视。他们也不相信 Java 开发人员可以写好
JavaScript —— 所以，不应该由开发人员自己来写 JavaScript，而应该由框架来自动生成 JavaScript。封装在 tag
中就成了一种非常自然的选择。<br>
<br>
现在我要问的问题是，我们是否应该依赖这么多自动生成的 JavaScript？万一遇到了复杂的情况，这些 tag 不适用，我们是不是还是要去找到源头，修改生成 JavaScript 的代码？<br>
更进一步，过于依赖这些自动生成的代码可能会阻碍我们采用更先进的 Web 技术。例如完全基于 CSS
的布局、structure/presentation/behaviour（分别由 XHTML/CSS/DOM 规范代表，位于
html/css/js 文件中）完全的分离以实现最大限度的页面重用。<br>
<br>
现在 POJO 这个词相信已经深入人心，我们是否应该再考虑一下 Plain HTML、Plain JavaScript 了？<br>
<img src ="http://www.blogjava.net/dlee/aggbug/20815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dlee/" target="_blank">dlee</a> 2005-11-21 19:46 <a href="http://www.blogjava.net/dlee/archive/2005/11/21/20815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对于 WebWork Ajax 支持的失望</title><link>http://www.blogjava.net/dlee/archive/2005/11/21/20794.html</link><dc:creator>dlee</dc:creator><author>dlee</author><pubDate>Mon, 21 Nov 2005 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/dlee/archive/2005/11/21/20794.html</guid><wfw:comment>http://www.blogjava.net/dlee/comments/20794.html</wfw:comment><comments>http://www.blogjava.net/dlee/archive/2005/11/21/20794.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/dlee/comments/commentRss/20794.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dlee/services/trackbacks/20794.html</trackback:ping><description><![CDATA[看完了 WebWork 支持 Ajax 的 presentation<br>
（http://wiki.opensymphony.com/download/attachments/2179/AJAX.ppt），感觉相当的失望。<br>
WebWork 对于 Ajax 的支持主要是通过引入新的 tag 来实现的。但是根据目前的文档看来，这几个 tag 的能力还相当有限。这些 tag 能做几件事情：<br>
1、动态刷新页面中的某一部分。这一部分封装在一个 div 中，通过轮循方式或者事件触发的方式来改变其内容。理论上可以在 div 内放入任何内容。<br>
2、通过一个 a 超链接或 submit 按钮来执行一段 JavaScript，并且可以触发一个事件。事件模型是由 DOJO 库来定义的。<br>
3、可以生成 tabbed pane，使用 tab 切换不同的内容，也可以在切换的同时触发一个事件。<br>
4、还有一个 tree 控件，同样使用 WebWork 新增的 tag 来生成和配置。<br>
<br>
目前看来基本上只能做这几件事情。如果要做更复杂的事情，只能自己编写 JS 代码调用 DOJO 或者第三方库的功能。这几件事情都是相当容易的
Ajax 技巧，没有一件是必须要使用 tag 这样丑陋的方式来实现的。我们来看看 WebWork 作者的一段实例代码：<br>
&lt;#list categories as cat&gt;<br>
&nbsp; &lt;#if cat.children.size &gt; 0&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;#assign icon="plus"/&gt;<br>
&nbsp; &lt;#else&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;#assign icon="square"/&gt;<br>
&nbsp; &lt;/#if&gt;<br>
&nbsp; &lt;@ww.a notifyTopics="children_${cat.id}"<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; href="toggle.action?id=${cat.id}"&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;img src="${icon}.gif"/&gt;<br>
&nbsp; &lt;/@ww.a&gt;<br>
&nbsp; [EXAMPLE CONTINUED]<br>
&lt;/#list&gt;<br>
这是 WebWork 支持的一个 tree 控件的一部分代码。<br>
在我看来这段代码实在是难看的要死。本来我要把页面中的逻辑，就是 behaviour 分离到独立的 js
文件中的，现在又多了这么一堆服务器端的逻辑！我就是很讨厌在 html 里面嵌入一大堆逻辑，无论是服务器端执行的还是浏览器端执行的。html
里面应该只有 structure！<br>
<br>
WebWork 使用的 Dojo 库目前还缺少很重要的一块——对于 DataGrid 的支持。DataGrid
是 B/S 架构企业应用表示层的核心组件，也差不多是开发量最大的组件。没有对于 DataGrid 的支持，怎么看都像是个玩具。目前已经有开源的
ActiveGrid（http://www.activegrid.com）可以做这件事情，如果熟悉 JavaScript 的话可以直接调用。<br>
还有一个问题，WebWork 的 tag 生成的代码中含有大量的 table，如果想用 CSS 做布局，看来是不太可能了。<br>
怎么样？看上去很美，Java 程序员不需要学习任何 JavaScript，全部使用 tag 就可以达到 Ajax 的效果。问题就是这个目标是否真的现实。况且，还有大量根本就不喜欢使用 tag 的 Java 程序员呢？<br>
<img src ="http://www.blogjava.net/dlee/aggbug/20794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dlee/" target="_blank">dlee</a> 2005-11-21 16:46 <a href="http://www.blogjava.net/dlee/archive/2005/11/21/20794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>