|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-04-14
korpton 写道 lsk 写道 而且貌似曾经有人测试过. velocity 的渲染速度好像比jsp 要快哦.
这就像有人说,C++就是比汇编见快,你相信吗???? 别扯谈了................. 我说哥们. 不相信自己去测试下. 在这里 胡言乱语什么? |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-14
支持使用vm!
1.组件是个问题,但不是决定性的吧。比如分页,你就不能在servlet里就算好,然后拿到vm里设置context然后输出? 2.貌似没有哪种预言是可以杜绝if-else的吧。实在太多if-else,说明能够再进行细分成多个处理,也就是多个vm啦。 3.没遇到过,不好下定论。不过感觉真的不管vm的事。 4.你就不能将这些常量类都放到context里? 5.为啥要new一个新类呢,所谓模板,不就是用例将变量的值匹配到预先设定的地方吗? 6.跟上面一条一样,既然是模板,为啥还要redirect呢?既然要redirect,那要这个模板干啥? 7.8. 一开始就用1.5。没用过1.4,没有发言权…… 9.“velocity 中页面的变量只能是 String 型”,还是那句话,模板就应该做模板的事。它不是逻辑处理。 10.就图敲的字符少! |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-14
现在正在学习Velocity!感觉还是挺不错的,使得我们不用再不断的Ctrl+C和Ctrl+V,而且语法简单易学。
哪位有Velocity深一层次的应用和介绍啊,给小弟介绍几个,学习学习~~ |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-14
sg552 写道 说明一下,我在项目中用的就是Velocity,可以说非常熟悉了。
文章取这个标题,只是用来吸引大家眼球的噱头 :) 下面是让我感到困惑的几个问题,欢迎大家踊跃提出解决方案!谢谢! 1. 可用的组件太少。 分页都要自己写。 更别说类似于JSP中的 extreme component了。绝对的硬伤。 2. 用起来不方便,跟JSP一样,#if, #else 漫天飞 3. 当JVM的资源降低时,会发生无法生成正常的页面情况。最常见的是图片显示不完全。很难看。 4. 不支持常量访问。 比如某个类的常量 SomeClass.CONST1,不能直接访问,需要增加个丑陋的 getCONST1()方法, 然后在velocity-toolbox.xml(或类似名称文件)中增加一个类声明才行。 直接导致的情况是vm中几乎都是魔法数MagicNumber 5. 与JSP不同,无法支持 import,只能在toolbox 中进行引用。引用的类必须是 static 类型。 用起来就怀念JSP中随意的 new 了。 6. 需要页面自动跳转时,JSP的 response.sendRedirect...很方便。而VM则需要…… 本问题最常见于访问某个 index.xxx 时,上头提出一个自动跳转的功能。使用js来跳转速度又非常慢,所以只能求__助于JSP。(或者写个 *.do 或者 *.view,用servlet中的response 进行跳转) 7. Velocity1.4 与1.5 所支持的东西不同。前者不支持SET,MAP,如果参考官方的文档,会让人死都不知道怎么死的。 另外1.4也不支持定义在单独某个VM中的Macro. 如果遇到个复杂的页面想用Macro来表示,而这个系统又属于集成阶段, 不让修改对应的macro配置文件,会非常麻烦。 8. 注释会出现BUG。在 1.4 版本中验证存在。 官方宣称的 ## 单行注释, #* *# 多行注释,都有BUG。 单行的BUG: 比如 XXXX(正常代码) ##(注释代码) 会出问题。 比如 #* ... *# 多行注释时,会有出现注释无效的情况,页面会把 #* ... 一起渲染出来。 我一般都是 <!-- #* .. *# --> 这样来注释。无奈啊。 9. velocity 中页面的变量只能是 String 型。 所以当你想比较两个数字的话,还需要 a.toString().equals(b.toString())。而在JSP中仅仅 == 就可以了。也就是说,当你在VM中遇到两个变量的相等比较时出现诡异错误时,把它们toString()然后在equals()比较是肯定可以的。 10. $var 与 <%= var %> 有区别吗? 为什么就觉得JSP不如Velocity简洁呢? 模板引擎的一个重要原则, 就是隔离业务逻辑, 所以不会提供response.sendRedirect等功能. 模板引擎通常只处理文本, 与图片无关. 可以考虑使用CommonTemplate: http://www.commontemplate.org 语法简洁(只有一个语法规则), 可以在模板中使用JSP的TagLib, 支持模块继承(对页面布局比较有利, 示例: http://www.commontemplate.org/zh/demo_extends.html), 等等. 对细节也有较多处理, 如: 支持char与String比较: 假设: char ch = 'A', String str = "A" 则 $if{ch == str} 成立. $for{10}表示迭代10次. $break{name == null} 代替 $if{name == null} $break $end 的写法. 等等. |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-15
绝对支持VM,就是因为它“快”(包括开发速度与运行速度)
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-15
同为墨板技术,VM和jsp没有谁会理论上速度更快,这不是比较的切入点。
jsp编译成class,没有cache,一般会比vm慢些,但是server vendor不会做优化? out.println()用的是stream,不会比stringbuffer慢。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-15
没太用过vm,一般用freemarker.不过看楼主的几个问题,好像不关模板的事情,应该是架构上的错误。
如: 分页问题 这个东西本来就不应该方到显示层算的,应该是业务层算好了,传递给显示层,显示层直接渲染就行了。 重定向问题 这个事情也不是显示层处理的,不然要controller层作啥?你别说你用vm的时候,没有controller层啊。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-15
模板就是为了少做重复工作,选择那个,用了都会觉得有问题,不然 也不会出来那么多模板引擎了
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-15
Velocity 的模板缓存机制有bug,很容易引起内存泄漏。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-16
xyz20003 写道 velocity里不能像freemarker那样调用taglib哦。
可freemarker里的null异常也是个麻烦。freemarker还不支持map和1 == 1 ? 1 : 2的形式。要是freemarker再完美一点儿就好了。 null异常好像可处理。且可定义显示模式。 而且程序逻辑正常是不会出现这种提示的。 |
|
| 返回顶楼 | |











