92
|
Bozho · 技术社区 · 14 年前 |
![]() |
1
17
关于速度的几个论点(我没有使用Freemarker):
对, references 是VTL的核心:
或
我不太同意或理解这一点。Velocity有一个缓存模板的选项,这意味着每次将缓存解析模板的抽象语法树,而不是从磁盘读取。不管怎样(我没有确切的数字),速度总是 快速的 为了我。
不同的是,使用JSP方法,您不会在每个使用相同页眉/页脚的JSP文件中重新组织这个布局吗?Tiles和SiteMesh允许您指定一个基本的布局页面(JSP、Velocity模板等,它们都是JSP框架的核心),在那里您可以指定您想要的任何内容,然后只委托给主内容的“内容”片段/模板。这意味着只有一个文件可以移动头。 |
![]() |
2
12
选择
但是应用程序有一种增量增长的方式,很难证明 “停止新的开发和翻新瓷砖(或其他解决方案),以便我们可以更容易地解决未来的问题” ,如果一开始没有在中使用复杂的解决方案,则这是必需的。 如果您确信应用程序将始终保持简单,或者您可以设置一些应用程序复杂性的基准,之后您将集成其中一个更复杂的解决方案,那么我建议不要使用瓦片/等等。否则,从GEGO中使用它。 |
![]() |
3
5
我不会说服你使用其他技术。据我所知,如果JSP对他们有用的话,每个人都应该坚持使用它。 我主要与Spring MVC一起工作,我发现 JSP 2+与SiteMesh的结合 完美的搭配。 站点网格2/3提供要应用于视图的装饰器,主要类似于其他模板引擎中的继承工作。现在没有这样的功能是不可想象的。 JSP二+人们声称JSP会使模板中的Java代码难以避免,这是假的。你不应该这么做,而且这个版本没有必要这么做。版本2支持使用EL调用方法,这与以前的版本相比是一个很大的优势。 与 JSTL公司 标记你的代码仍然看起来像HTML,所以它不那么尴尬。Spring通过非常强大的taglibs打包了对JSP的大量支持。 taglib也很容易扩展,因此定制自己的环境很容易。 |
![]() |
4
2
反对使用JSP的facelets(不在您的列表中,但我将仅提及它)的一个最佳参数是编译与解释器集成,而不是委托给JSP编译器。这意味着我在JSF 1.1中遇到的最烦人的事情之一——在保存更改以便运行时引擎发现更改时,必须更改周围JSF标记的id属性——消失了,给了save-in编辑器,在浏览器循环中重新加载,还有更好的错误消息。 |
|
5
2
一个好的视图技术消除了大多数和大多数异常的if/switch/conditional语句,而simple include则没有。使用“复杂”视图技术会产生“简单”应用程序。 |
![]() |
6
1
您没有提供有关特定应用程序的信息。例如,我不使用JSP的原因如下: 很难避免在JSP模板中使用Java代码,因此您打破了纯视图的概念,因此您将很难在视图和控制器的多个位置维护代码 JSP自动创建建立会话的JSP上下文。我可能想避免它,但是如果您的应用程序总是使用会话,这对您来说不是问题 JSP需要编译,如果目标系统没有Java编译器,任何细微的调整都需要使用其他系统,然后重新部署 最小的JSP引擎大约是500k字节码加上JSTL,所以它不适合嵌入式系统 模板引擎可以生成同一模型的不同内容类型,比如JSON负载、网页、电子邮件正文、CSV等等。 当非技术人员从未遇到修改常规模板的困难时,非Java程序员可能很难使用JSP模板。 很久以前我也问过同样的问题,最后我写了我的框架(当然是基于模板引擎的),它没有我在其他解决方案中看到的所有缺点。不用说是大约100k字节码。 |
![]() |
7
0
我知道这是一个聪明的答案,但事实是,如果你认为在当前项目中使用模板而不是代码没有任何优势,那可能是因为在当前项目中,没有模板。 一部分是关于规模。你可能会认为include的功能和sitemesh一样强大,这当然是对的,至少对于一小部分页面(我想大概是100页左右),但是如果你有几千页,它就会变得无法管理。(因此,对于eBay来说,这是不必要的,对于Salesforce来说,这可能是必要的) 另外,如前所述,freemarker和velocity不是特定于servlet的。您可以将它们用于任何事情(邮件模板、脱机文档等)。使用freemarker或velocity不需要Servlet容器。 最后,你的第五点只是部分正确。每次访问时都会编译它,如果还没有这样做的话。这意味着,每当您更改需要记住的内容以删除servlet容器的“工作”目录时,它就会重新编译JSP。这对于模板引擎是不必要的。 TL;博士 编写模板引擎是为了解决JSP+JSTL的一些(感知的或实际的)缺点。是否应该使用它们完全取决于您的需求和项目的规模。 |