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