我正在阅读有关JSF的信息,它是一个UI框架,并提供了一些UI组件。但是,它与jQueryUI,AngularJS,ExtJS甚至纯HTML,CSS和JavaScript中可用的组件数量相比有何不同?
为什么有人应该学习JSF?
我正在阅读有关JSF的信息,它是一个UI框架,并提供了一些UI组件。但是,它与jQueryUI,AngularJS,ExtJS甚至纯HTML,CSS和JavaScript中可用的组件数量相比有何不同?
为什么有人应该学习JSF?
Answers:
从JSF到纯JSP / Servlet / HTML / CSS / JS就像从jQuery到纯JS:用更少的代码做更多的事情。以PrimeFaces(基于jQuery + jQuery UI)为例,浏览其展示以查看完整的代码示例。BootsFaces(基于jQuery + Bootstrap UI)也展示了完整的代码示例。如果仔细研究这些示例,将会发现您基本上需要一个简单的Javabean类作为模型,并需要一个XHTML文件作为视图。
请注意,您不应将JSF视为单独的HTML / CSS / JS的替代品,还应考虑服务器端部分(特别是:JSP / Servlet)。JSF消除了收集HTTP请求参数,转换/验证它们,更新模型值,执行正确的Java方法进行业务工作以及生成HTML / CSS / JS样板代码的所有样板工作。使用JSF,基本上可以得到一个XHTML页面作为视图定义,一个Javabean类作为模型定义。这大大加快了开发速度。
与每个基于组件的Web MVC框架一样,在JSF中,您对呈现的HTML / CSS / JS的控制较少。添加自定义JS代码并不是那么容易,因为您还必须考虑服务器端的JSF视图状态(例如,在JS端启用禁用的按钮将不会在JSF端启用该按钮。巨大的安全优势)。但是,如果这是一个主要的突破,那么,那就寻找一个基于动作的Web MVC框架,例如Spring MVC。你只考虑你必须编写所有的HTML / CSS / JS代码自己。同样,如果您从Facelets退回到JSP,您也会错过高级模板功能。
另一方面,如果您有一个大型的基于JSP / Servlet / HTML / CSS / JS / jQuery的网站,并且希望将重复的JSP / Servlet / HTML / CSS / JS / jQuery样板代码重构为可重用的组件,则解决方案之一就是JSF。自定义模板,标记文件和组件可以帮助实现这一目标。从这个角度来看,JSF高于JSP / Servlet / HTML / CSS / JS / jQuery(这也是为什么在涉足JSF之前了解这些基础非常重要的原因)。
您可以在此处找到基于JSF的真实启动项目:Java EE Kickoff App。您会看到它旁边的JSF包括良好的HTML5,CSS3和jQuery。
创建JSF的目的是为了使Java商店不必学习诸如jQuery之类的东西,也不必构建复杂的JS,而是专注于纯Java堆栈。在时间就是金钱的世界上,许多地方已经开始专注于Java开发,减少一种语言/语言堆栈就可以使培训和维护变得更快,因此更便宜。
我要补充一点,JavaScript很容易成为大型团队的维护噩梦,尤其是如果该项目中的某些开发人员对网络的了解不多的话。
使用Javascript和诸如jQuery的框架,您将具有完全的灵活性和完全的控制权。使用ext等,您将失去很多控制权,必须适应框架。使用JSF,您将完全失去控制,必须完全适应框架。您在生命周期等中被调用,最后您无法控制何时可以调用服务器以及在哪里不能调用服务器。如果您要做被认为是“特殊”的事情,那么您将处于非常困难的境地。在JSF世界中,即使是诸如多列表排序之类的基本内容或只能键入有限字符集的字段(例如number字段)也被视为“特殊”。
但是,您拥有的灵活性越多,可以犯的错误或不良做法就越多。高灵活性仅适用于高度聪明的程序员,其他人则将项目变成难以处理的噩梦。
但是,由于JSF及其有限的灵活性,总是只有少数(甚至只有一种)正确的方法来做某事。您非常有限,不能创建快捷方式,必须编写更多的XML等。但是,在适应标准时,可以更好地控制那些没有经验或技术水平低下的程序员所编写的代码。结果,大公司喜欢JSF,因为它对他们来说“更安全”。
当我从GWT迁移到JSF时,我感到震惊,有多少对我来说很自然的事情被认为是非常不典型的,有多少简单的事情很难做到。而且,即使进行最小的更改,例如在标签后添加“:”符号,在GWT / jQuery支持的应用程序中,这将更改一个函数生成标签,需要更改数十个具有本地化属性的文件,甚至没有考虑除了我以外,其他任何人都...
我强烈不同意jsf添加了任何内容。它只会增加开销。我在服务器上做过ui操作是我听过的最荒谬的事情。大型团队中的javascript效果很好-称为重用代码。
只需将jquery包裹在一些jsp标记中,这就是您需要做的所有事情,并且不让.jsf和richfaces遇到.shackles和可伸缩性问题。
在将ExtJS框架用于大型Web应用程序之后,我知道它的使用非常简单。ExtJS(Schena)最适合MVC体系结构中的(Oracle 11g)数据库交互。该视图用于视觉/用户交互。控制器从PLSQL包(CRUD的API,SQL选择查询等)中指定了“处理”和需要使用的触发器。使用模型和存储文件将数据项“映射”到查看器/输入。
ExtJS不适合非数据库密集型Web界面-Angular JS可能更适合。