锁定老帖子 主题:我也踢Taglib一脚
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-04-16
robbin 写道 引用 程序员做布局比美工可能更容易上手
我不是看错了吧。 怎么说呢?其实布局这个东西是应该就是说用户界面了。有些是项目经理去和客户沟通要画个大概界面,着眼于用户操作的方便性和实用性,回来要交给美工去改进。这个比较重视逻辑功能了,但是,但是其实做布局的人,不是程序员角色了,是另外的角色了。 或者这样说吧,去和客户做交流,项目经理要去,他可能要带个美工去,因为客户对界面美观和颜色要求很高,现场画界面和配色。但是绝对没有必要带个程序员去,孤魂一笑兄对这个没意见了吧? 如果一家公司很小的话,小到所谓项目经理也要写代码,充当程序员角色,这个现在不少哦,但是呢,美工这个角色,说实话很难替代,那么也就有了“程序员做布局比美工更容易上手”这种说法。而且,项目经理不大多都是程序员升上去的吗?哈哈 |
|
返回顶楼 | |
发表时间:2004-04-16
jinbo 写道 很希望孤魂能公开部分源代码供我们学习进步一下,说实在的这些技术比精通EJB等东西更有实际意义
这些技术有这些的意义,EJB有EJB的意义。 Dreamweaver的模板使用,加上HTML和CSS,其实也没什么。关键是一个规划和条理问题。试问EJB做深了,就不需要规划和条理吗? |
|
返回顶楼 | |
发表时间:2004-04-16
请不要误会,我的意思是项目众多,其中大部分不一定会用到EJB,而HTML和CSS的合理运用则是任何项目都需要的。而且也请你不要轻视这些技术,项目的成败同样也依赖于这些技术
|
|
返回顶楼 | |
发表时间:2004-04-16
jinbo 写道 请不要误会,我的意思是项目众多,其中大部分不一定会用到EJB,而HTML和CSS的合理运用则是任何项目都需要的。而且也请你不要轻视这些技术,项目的成败同样也依赖于这些技术
抓抓你的小辫子先,任何项目需要?呵呵,我用C/S, Swing或者SWT不需要吧? 没人轻视这些技术,但是你说这些的比EJB更有意义,我是绝对的不同意。 一个能合理应用HTML+CSS,配合美工做好Web表示层的人,和一个能真正精通EJB,并且进行性能优化提高效率的高手,价值是不一样的。 第一种有个几个网站设计的经验,悟性好,多总结,就可以做到了,HTML和CSS的门槛很低的。至于第二种首先需要是一个Java高手,至于JAVA高手的产生,我就不说了。 之所以我敢这样说,因为我自认我做过第一种达到和做过了,不过第二种我还没有达到。毕竟,达到第二种境界需要的项目机会和实力要求高多了。 |
|
返回顶楼 | |
发表时间:2004-04-16
稍微插一句:
设计和制件是美工的两个方面,前者在图形设计领域叫视传,视觉传达的意思,后者在网络领域叫做网页制作,一般的说法,我们的设计是这么做的,视传人员只负责二维效果,就是它只给你一张PS或者CORELDRAW的源图,对这个效果的处理和生成网络标签,由另外人员负责,它们可以用CSS,或者原始的HTML标签来控制。制作人员之外,程序员/项目需求分析人员(有时是不分的)需要的是另外一个BS界面模型(不是原型)来模拟客户需求流程和交互性要求。只有三方面相互协调,才能有真正好的用户界面。时间上来讲,视传和模型可以并行,而制作要相对滞后一点,因为它同时受两者的决定性。 还有一点,制作完成后不是说它不变的,就好象原型出来以后(不是模型)用户还有意见,就是说JSP页面要再设计和制作。从这个意义上讲,标签是不合适的。如果我们需要直接编辑HTML中混有代码的最终页面,Tapestry无论如何要比标签可以容忍的多,事实上,zope/的zpt(zope page template)也是这个思想 |
|
返回顶楼 | |
发表时间:2004-04-16
其实有时候界面比较人性化会给客户带来一个比较好的第一感觉,感觉这东西做的很不错。只有易用,客户才会去用,有时候客户真的很白痴,在我们以为理所当然的事情客户觉得很难理解。做企业运用和做网站不一样,企业运用面对的客户天天要用这东西,如果很别扭,他就会发镖。反而是否漂亮他并不是很在乎,所以更应该强调布局。而不是先强调美观。再看看windows的流行,就是两个字“易用”。其实M$非常在意界面,VB之父还专门写了这么一本书。
讨论什么重要什么不重要就象讨论Java or .not哪个更好一样,没有意义。 |
|
返回顶楼 | |
发表时间:2004-04-16
孤魂兄,呵呵,不是程序员懒,相对于一个做了多年的JSP程序员,这个自然也不是太大的问题。你说美工只适合做图片,我觉得就不怎么对了,对于专门做web的美工,对于html的掌握(还包括各种特效),以及javascript都是相当不错的。再说了,做项目的时候都会先做界面原型,要在客户认可的情况下才进行正式开发,界面原型你们不是美工做的么?
我个人觉得,做一般的J2EE的项目,最麻烦最耗时的就是web页面的开发了。其实不是页面多难化,而是要做到很好的控制是非常麻烦。 |
|
返回顶楼 | |
发表时间:2004-04-16
凤舞凰扬 写道 孤魂兄,呵呵,不是程序员懒,相对于一个做了多年的JSP程序员,这个自然也不是太大的问题。你说美工只适合做图片,我觉得就不怎么对了,对于专门做web的美工,对于html的掌握(还包括各种特效),以及javascript都是相当不错的。再说了,做项目的时候都会先做界面原型,要在客户认可的情况下才进行正式开发,界面原型你们不是美工做的么?
我个人觉得,做一般的J2EE的项目,最麻烦最耗时的就是web页面的开发了。其实不是页面多难化,而是要做到很好的控制是非常麻烦。 :〉 美工应该是专业美术设计系毕业的。他/她应该专注于界面的视觉效果,人机操作界面,良好的阅读性等等这些外在的东西,而不需要对代码有很深的掌握,更不用研究Javascript效果。事实上,他们也很难做出需要的代码和效果。这往往需要感性思维且经过专业训练的人。而程序员大多数都是理性思维,很少有人对美术什么的有研究。 界面原形当然是美工MM作,但是他们只需要了解一点如何生成简单的首页和链接就行了。不用知道javascript吧。只要能做出好的图片(或者Flash),就能证明他作为美工的价值。 j2ee项目的web开发确实是很麻烦。因为要做很多很多的界面,还要考虑include,考虑i18n,考虑不出乱码,考虑目录结构,考虑系统功能分模块(目录),考虑CSS如何使用,考虑form如何验证等等。 但是有一件事更重要,就是孤魂兄说的易用性,或者界面的友好程度。例如,按钮放在那里合适?字体多大比较舒服?提交后出错如何提示?界面导航如何更方便?内容如何更突出?界面色彩是否刺眼?等等。。 这是更重要的。 我认为,好的美工应该对上述的这些多了解,对于code之类的程序员更擅长的东西,就不需要知道太多了。 |
|
返回顶楼 | |
发表时间:2004-04-20
表面工整的TagLib,掩藏着什么样的内幕?
下面的代码,是从jive的ViewForum.jsp生成的java文件摘录的,每一个函数,都只是为了对应一个<jive:i18n key="global.topic" />类似的tag,而这个还只是JSTL里面的Internationalization部分,已经算是最简洁的了。 虽然说JAVA效率本来就不怎么高,可是一句 <%=messageResource.getString("Order.PlaceOrder")%>; 为了使用tag变成近十行的函数,还不算其他初始化等等的工作,我是接受不了的了。 另外说一句,用了tag,jsp页面出错时的调试,可是麻烦不少的哦。 private boolean _jspx_meth_jive_i18n_39(PageContext _jspx_page_context); throws Throwable { JspWriter out = _jspx_page_context.getOut();; // jive:i18n com.jivesoftware.base.tags.I18nTag _jspx_th_jive_i18n_39 = (com.jivesoftware.base.tags.I18nTag); _jspx_tagPool_jive_i18n_key.get(com.jivesoftware.base.tags.I18nTag.class);; _jspx_th_jive_i18n_39.setPageContext(_jspx_page_context);; _jspx_th_jive_i18n_39.setParent(null);; _jspx_th_jive_i18n_39.setKey("global.topic");; int _jspx_eval_jive_i18n_39 = _jspx_th_jive_i18n_39.doStartTag();; if (_jspx_th_jive_i18n_39.doEndTag(); == javax.servlet.jsp.tagext.Tag.SKIP_PAGE); return true; _jspx_tagPool_jive_i18n_key.reuse(_jspx_th_jive_i18n_39);; return false; } private boolean _jspx_meth_jive_i18n_40(PageContext _jspx_page_context); throws Throwable { JspWriter out = _jspx_page_context.getOut();; // jive:i18n com.jivesoftware.base.tags.I18nTag _jspx_th_jive_i18n_40 = (com.jivesoftware.base.tags.I18nTag); _jspx_tagPool_jive_i18n_key.get(com.jivesoftware.base.tags.I18nTag.class);; _jspx_th_jive_i18n_40.setPageContext(_jspx_page_context);; _jspx_th_jive_i18n_40.setParent(null);; _jspx_th_jive_i18n_40.setKey("global.author");; int _jspx_eval_jive_i18n_40 = _jspx_th_jive_i18n_40.doStartTag();; if (_jspx_th_jive_i18n_40.doEndTag(); == javax.servlet.jsp.tagext.Tag.SKIP_PAGE); return true; _jspx_tagPool_jive_i18n_key.reuse(_jspx_th_jive_i18n_40);; return false; } private boolean _jspx_meth_jive_i18n_41(PageContext _jspx_page_context); throws Throwable { JspWriter out = _jspx_page_context.getOut();; // jive:i18n com.jivesoftware.base.tags.I18nTag _jspx_th_jive_i18n_41 = (com.jivesoftware.base.tags.I18nTag); _jspx_tagPool_jive_i18n_key.get(com.jivesoftware.base.tags.I18nTag.class);; _jspx_th_jive_i18n_41.setPageContext(_jspx_page_context);; _jspx_th_jive_i18n_41.setParent(null);; _jspx_th_jive_i18n_41.setKey("global.replies");; int _jspx_eval_jive_i18n_41 = _jspx_th_jive_i18n_41.doStartTag();; if (_jspx_th_jive_i18n_41.doEndTag(); == javax.servlet.jsp.tagext.Tag.SKIP_PAGE); return true; _jspx_tagPool_jive_i18n_key.reuse(_jspx_th_jive_i18n_41);; return false; } |
|
返回顶楼 | |
发表时间:2004-04-20
这么多人批评taglib,为什么呢,我感到奇怪,如果是因为struts和tapestry的比较,可能还有些根据,但如果是拿jsp来说辞,我觉得基本上就是错了。
从根本上说taglib和tapestry的处理办法是差不多的,当然开发上不是很直接,所以我也不赞同自己开发taglib,除非是比较大的项目。反过来说为什么用taglib因为是xml一脉相承的,这个角度上可能是省事些。你们所谓.net的组件背后,恰恰就是taglib,只不过它的ide做得好,组件比较全。 实际上大部分开发中使用通用的taglib应该就足够了,而不是自己去写什么tag,一则难以理解,二则很难写的好,这两点都涉及到了所谓和美工配合的问题。大部分通用的tag而言是不存在这个问题的,比如struts的tag都支持css。 至于jsp,如果认为jsp相对简单的人,说明页面开发上不是对象的思想。反过来如果只是使用很少的jsp,那么taglib也不拒绝使用jsp,的确在这个层次上,jsp始终是最灵活的,但只限于非用不可的地步,而且应该仅限于页面逻辑本身。 |
|
返回顶楼 | |