为什么我要使用模板引擎?jsp include and jstl vs tiles, freemarker, velocity, sitemesh
我即将选择组织我的观点的方式(使用spring-mvc,但这并不重要)
据我所知,有6个选项(尽管它们并不相互排斥):
- 瓷砖
- 网站网格
- 免费标记
- 速度
<jsp:include>
<%@ include file="..">
磁贴和站点网格可以分组;Freemarker和Velocity也是如此。每个小组中使用哪一个不是这个讨论的问题,有足够的问题和讨论。
这是一个有趣的阅读,但不能完全说服我使用瓷砖。
我的问题是 - 这些框架给出了什么,不能正确地完成和JSTL。要点(部分摘自文章):<@ include file="..">
-
包括页面的某些部分,如页眉和页脚 - 两者之间没有区别:
<%@ include file="header.jsp" %>
和
<tiles:insert page="header.jsp" />
在标题中定义参数 - 如标题、元标记等。这是非常重要的,特别是从SEO的角度来看。使用模板选项,您只需定义每个页面应定义的占位符即可。但是,您可以在jsp中使用JSTL,使用(在包含页面中)和(在包含页面中)
<c:set>
<c:out>
布局重组 - 如果要将痕迹导航移动到菜单上方,或将登录框移动到另一个侧面板上方。如果页面包含(使用 jsp)组织得不好,在这种情况下,您可能需要更改每个页面。但是,如果您的布局不是过于复杂,并且您将常见内容放在页眉/页脚中,则无需担心。
常见组件和特定内容之间的耦合 - 我没有发现这个问题。如果要重用某些片段,请将其移动到不包含任何页眉/页脚的页面,并在需要时包含它。
效率 - 比其他任何东西都更有效,因为它被编译一次。所有其他选项被解析/执行多次。
<%@ include file="file.jsp" %>
复杂性 - 所有非 jsp 解决方案都需要额外的 xml 文件、附加包含、预处理器配置等。这既是一条学习曲线,也是引入更多潜在的失败点。此外,它使支持和更改更加繁琐 - 您必须检查许多文件/配置才能了解正在发生的事情。
占位符 - 速度/自由标记是否比 JSTL 更能提供任何东西?在 JSTL 中,您放置占位符,并使用模型(由控制器放置在请求或会话作用域中)来填充这些占位符。
所以,说服我应该使用上述任何框架,而不是/除了普通的JSP。