UIComponent,UI层组件,作为组件其最重要的就是接口的提供以及扩充性,同时作为UI层的组件,从UI层的职责来考虑就是UI的展示和交互两个方面,在这两个方面上UIComponent最需要考虑的就是显示和逻辑的分离,避免逻辑造成对显示的污染,显示和逻辑的分离的好处就在于修改UI以及修改逻辑时都会更加的方便,不用去繁重的html代码中寻找UI和逻辑。
UIComponent可以参考的有Tapestry、JSF等等这些东西,这些组件化的建设中个人觉得一个问题就在于造成了UI的修改变得很困难,因为UI都在代码里控制了,也就是说没有做到很好的UI显示和逻辑的分离,这种组件化的好处感觉只在于对于开发人员的满足,但对于集成UI这项占据巨大工作量的工作来说,仍然是很痛苦很麻烦的一件事。
目前正在做UIComponent这块的工作,对于这块的设计目前采用的是UIComponent由UIHtmlTemplate、UICssTemplate和UILogicTemplate共同组成,UIHtmlTemplate控制页面的静态元素显示,UICssTemplate控制整个页面的静态以及动态元素的显示形式,UILogicTemplate控制页面动态元素的逻辑以及交互逻辑。整个UIComponent采取Template机制,采用的工具是Velocity,通过自定义Template所需要的context解析成html,UILogicTemplate中控制的为页面动态元素的创建逻辑,如要创建一个表格、创建行等,对于这些创建的表格、行等动态元素的显示形式的控制仍然通过css实现,与服务器的交互逻辑则通过ajax进行实现,UIComponent通过表现层引擎加载到页面上下文中,这样在页面上下文中就可以直接以#tree等等这样的方式来使用了。在这样的一个设计中UI的显示和逻辑算是做到了分离,不过现在出现的问题主要在于编写一个UIComponent仍然不够方便,需要对于js、css以及ajax都熟悉的人(或是这样的几个人,不过目前看下来觉得有oo基础的人去学下这个东西还是很快的,很容易上手的三样很强大的东西,^_^,这些天经常被js、css的强大而震惊,谁叫我是外行 ),不过在用的方面来说就比较好用了,整个系统的UI控制(风格等)以及交互方式都变得非常的清晰,UI集成的速度也大幅度提升,UI集成来讲已经不像以前那样的痛苦了。
UIComponent方面除了页面常用的html相关元素外,最重要的还是象数据集式的控件(树、表格、下拉列表、下拉树、数据Grid等等)方面。
这里只是大概的对UIComponent进行一个陈述,如果大家有好的看法的话希望能加以指点......
ps: 个人觉得做UIComponent就和做别的一样,最重要的是要把握其目的,应该说UIComponent的目的是为了让开发人员在进行页面集成工作时更加简单,页面的显示和逻辑修改更加的方便,整体系统的风格更加的统一,另一方面就是提供出足够的扩展和自定义机制。