在设计我的jsf页面时,我意识到某些组件在我的应用程序的不同布局中至少重复使用了两次或三次。例如,作为假设情况,请考虑SO上的vote-up
按钮,该按钮在topic questions page
(这不是实际情况)中以及(在不同的布局中)多次包含在特定的每个帖子上问题页面。
所以我担心的是,由于我的一些组件被重复使用两次(在不同的布局中),(如帖子上的投票按钮或选项栏)我应该在自定义组件中使用我的标记并使用这些组件而不是在多个地方编写相同的代码。在为频繁呈现的组件选择自定义组件时是否需要考虑性能问题?
还是在构建时或渲染时间内转换为html的JSF组件的标记吗?
答案 0 :(得分:3)
在问题的最简单部分,我会说使用自定义组件与内联facelet标签没有明显的性能问题。尽管看起来很复杂,但是Faclets servlet仍然需要通过两种方式选择并编译相同数量的XML元素。
除了BalusC链接的主题中讨论的问题之外,我想补充JSF可扩展性的主要目的是允许开发人员尽可能地重用代码。一个相关的好处是,您的Facelet客户端页面(使用模板的页面)将与XML标记一样紧凑和简洁。
我的经验是,这可能是一把双刃剑。您可以花费大量的开发时间来调整自定义组件,只需“妥协”并将工作页面中的剪切和粘贴工作转移到另一个页面以完成工作。这是你的权衡取舍。如果您希望很快部署您的应用程序,您真的不想进入另一个Faces Component Library开发项目。
我的建议是尽可能地忽略所有的奇怪东西(Javascript交互式图形等),并尽可能地使用枯燥的旧JSF基本组件对您的应用程序进行编码。让它使用最简单的组件来完成这项工作。应用程序运行后,您可以返回并重新编写表示层(Facelets标记),以优化为可重用组件或更高功能的组件,如RichFaces,IceFaces,PrimeFaces或* Faces。