RIAWork介紹之一:關(guān)注界面和交互的靈活變化

          在上篇RIAWork的簡(jiǎn)要介紹篇中,已經(jīng)提及RIAWork的重要目標(biāo)之一就是為界面和交互的靈活變化提供支撐,在這里來(lái)看看界面和交互在實(shí)際項(xiàng)目中的變化情況以及RIAWork是如何提供對(duì)于其變化的支撐的。
          界面變化
          在實(shí)際的項(xiàng)目中,即使是同類(lèi)的項(xiàng)目,在各個(gè)企業(yè)甚至各個(gè)部門(mén)都有對(duì)于不同界面的需求,例如有些企業(yè)喜歡藍(lán)色、有些喜歡淡藍(lán)色等等的,有些則關(guān)注是國(guó)字形布局抑或其他各類(lèi)布局,總之是各種各樣的需求都在不斷的產(chǎn)生,稍微的總結(jié)有以下幾種情況:
          1、界面風(fēng)格的變化需求
          ????? 體現(xiàn)出來(lái)的有界面顏色、界面中元素的顏色、樣式等的要求。
          2、界面布局的變化需求
          ??????體現(xiàn)出來(lái)的有對(duì)于界面的布局的要求。
          在實(shí)際的項(xiàng)目中,當(dāng)發(fā)生之上的兩種變化的時(shí)候,通常都要耗費(fèi)極大的精力去做界面的集成,特別是象以前采用jsp的那種系統(tǒng),在重新進(jìn)行界面的集成時(shí)還得非常小心,才能避免重新集成界面后造成功能的影響,當(dāng)然,一些做的比較好的公司能夠通過(guò)完全用css來(lái)控制界面風(fēng)格、布局的方式來(lái)減少這兩種變化帶來(lái)的影響,但其實(shí)很多情況下僅僅通過(guò)css還無(wú)法完全做到足夠靈活的控制來(lái)支撐用戶(hù)對(duì)于界面的需求,RIAWork致力于解決這兩種變化帶來(lái)的集成的工作量,同時(shí)保證對(duì)于原有功能的無(wú)影響,那么RIAWork是怎么做的呢?
          在RIAWork中第一種方式也是采用css的方式來(lái)控制界面風(fēng)格以及布局;
          另外一種方式則是RIAWork的特點(diǎn),RIAWork強(qiáng)調(diào)對(duì)于html的無(wú)污染性,其實(shí)這只是一個(gè)很模糊的說(shuō)法,準(zhǔn)確的說(shuō)是RIAWork強(qiáng)調(diào)對(duì)于界面html的無(wú)污染性,這里的區(qū)別在于界面html指的是用系統(tǒng)原型圖切割形成的html,而不是還需要手工編輯修改的html,這點(diǎn)體現(xiàn)了RIAWork和JSF+Facelets以及Tapestry的不同點(diǎn),Tapestry以及JSF+Facelets也非常強(qiáng)調(diào)對(duì)于html的無(wú)污染性,但它仍然需要在html的元素上增加自定義的屬性,如jcwid這樣的屬性,而在RIAWork中則不需要,這樣的話(huà)就完全沒(méi)有了html的手工編輯的必要性,自然就將界面集成的工作幾乎降為了零,在RIAWork中可以直接采用類(lèi)似riawork?page=index.htm這樣的方式來(lái)訪問(wèn)index.htm,即時(shí)的看到系統(tǒng)的新的界面效果;這里其實(shí)也體現(xiàn)了RIAWork強(qiáng)調(diào)的靜態(tài)以及動(dòng)態(tài)處理的分離上,保持了html的靜態(tài)性質(zhì),將其動(dòng)態(tài)性質(zhì)進(jìn)行了剝離,我將這種方式稱(chēng)為對(duì)于無(wú)侵入性的decorator方式,而Tapestry、JSF+Facelets的方式我稱(chēng)為帶有侵入性的decorator方式,而采用tag的方式我認(rèn)為根本就不是decorator的方式,而是徹底的替換方式,后兩種方式都讓html純靜態(tài)的性質(zhì)被污染,導(dǎo)致了靜態(tài)和動(dòng)態(tài)的變化產(chǎn)生的互相影響。
          對(duì)于RIAWork本身提供的基礎(chǔ)設(shè)施控件,如豐富的表格、Grid則可通過(guò)css甚至替換其html的方式來(lái)形成新的風(fēng)格、布局的控件。
          交互變化
          交互變化在實(shí)際的項(xiàng)目中也經(jīng)常出現(xiàn),而這點(diǎn)是很頭疼的一點(diǎn),因?yàn)榻换サ淖兓ǔ?lái)講帶來(lái)的還不僅僅是象界面變化那樣的靜態(tài)性質(zhì)的變化,有些時(shí)候還會(huì)帶來(lái)系統(tǒng)處理的變化,典型的如將一頁(yè)填表的方式變化為多頁(yè)向?qū)У奶畋矸绞剑@種交互變化在系統(tǒng)中發(fā)生時(shí)往往會(huì)很麻煩,需要對(duì)頁(yè)面、代碼通通做改變,又如用戶(hù)希望將界面上的一個(gè)下拉選擇變成彈出選擇,這也需要花費(fèi)你一點(diǎn)時(shí)間去做到,而在RIAWork中,這些交互的變化也會(huì)變得很方便就進(jìn)行調(diào)整,在RIAWork對(duì)于交互的變化一律歸入動(dòng)態(tài)變化性質(zhì),對(duì)于動(dòng)態(tài)變化性質(zhì)的東西,均通過(guò)管理端進(jìn)行調(diào)整,在管理端中可選擇界面元素的交互行為,如向?qū)降慕换バ袨椤⑾吕换ァ棾鼋换ァ㈡溄邮浇换サ鹊龋?dāng)然,RIAWork不可能能夠提供對(duì)于所有交互行為的支撐,這就需要通過(guò)實(shí)踐來(lái)不斷的提煉交互模式,不斷的充實(shí)到RIAWork中,關(guān)于RIAWork的擴(kuò)充在后續(xù)的介紹中再詳細(xì)描述。

          通過(guò)對(duì)于RIAWork對(duì)于界面以及交互變化的介紹,突出了RIAWork的一個(gè)重要特征,就是靜態(tài)性質(zhì)以及動(dòng)態(tài)性質(zhì)的分離,不再支持象以前asp、jsp這些服務(wù)端腳本語(yǔ)言提供的靜態(tài)和動(dòng)態(tài)一起綁定的形式,一個(gè)基本的職責(zé)分離的原則。
          對(duì)于界面以及交互變化的支撐,是RIAWork的核心目標(biāo),也是RIAWork把用戶(hù)當(dāng)上帝,重界面和交互原則的重要體現(xiàn)。

          后續(xù)文章預(yù)告:
          RIAWork介紹之二:靜態(tài)以及動(dòng)態(tài)性質(zhì)的分離處理
          RIAWork介紹之三:RIAWork的擴(kuò)充以及擴(kuò)展
          RIAWork介紹之四:RIAWork的開(kāi)放性
          RIAWork介紹之五:RIAWork的靈活性以及智能性
          RIAWork介紹之六:RIAWork的動(dòng)態(tài)部件

          RIAWork進(jìn)展
          進(jìn)行中:Velocity for js;Roadmap。
          計(jì)劃中:成員的確定以及討論;RIAWork網(wǎng)站的建立;開(kāi)發(fā)、部署以及演示環(huán)境的搭建;M1工作的開(kāi)展。

          posted on 2006-05-10 14:54 BlueDavy 閱讀(3092) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): @RIAWork

          評(píng)論

          # re: RIAWork介紹之一:關(guān)注界面和交互的靈活變化 2006-05-10 17:12 IUSR

          “無(wú)污染HTML”。不知道你在這里涉及到的HTML是指以什么角色出現(xiàn)的HTML,是僅僅作為頁(yè)面展示的一部分的HTML還是其他的?允許不允許這些HTML片斷自帶控制代碼——比如瀏覽器支持的script?希望能進(jìn)一步解釋一下。
          如果僅僅是做頁(yè)面展示的話(huà),HTML固然可以,但你所說(shuō)的“侵入性decorator”也沒(méi)有值得指責(zé)的地方,因?yàn)榇蠖鄶?shù)時(shí)候這些侵入性的decorator起到了綁定的作用,而且如果用在XHTML(Modularization)上,這甚至都談不上侵入性。
          我原先以為RIAWork會(huì)走其他RIA框架etc.的路子,使用xml等等定義控件、widgets,看來(lái)你有其他理由=) 我覺(jué)得如果只有HTML做展示,那如何做到擴(kuò)展?另加描述信息?也許還是不太明白R(shí)IAWork的整體規(guī)劃,所以提出這樣的問(wèn)題,見(jiàn)諒。
          有一個(gè)希望就是能不能提供更多有關(guān)RIAWork的信息,或者是我太懶了沒(méi)有注意到你已經(jīng)列舉的信息。//bow  回復(fù)  更多評(píng)論   

          # re: RIAWork介紹之一:關(guān)注界面和交互的靈活變化 2006-05-11 09:08 guitarpoet

          既然是JavaScript RIA,客戶(hù)端的JavaScript的重要性也要體會(huì)出來(lái),估計(jì)樓主看過(guò)Rails的AJAX方案,也許那是個(gè)比較好的方案。

          但是我還是比較看重直接進(jìn)行客戶(hù)端JavaScript編程,只要實(shí)現(xiàn)了JavaScript的完善的包和引入機(jī)制(很遺憾,標(biāo)準(zhǔn)的JavaScript里面沒(méi)有),那么客戶(hù)端的編程完全可以采用JavaScript編程的方式進(jìn)行開(kāi)發(fā),說(shuō)句實(shí)話(huà),這樣子學(xué)習(xí)曲線不會(huì)比自己發(fā)明一套框架陡,組件和可重用性也不會(huì)差而且工作量較低可測(cè)試性也比較高。

          我非常贊同非侵入式的動(dòng)態(tài)HTML頁(yè)面開(kāi)發(fā),說(shuō)句不好聽(tīng)的,模板式的動(dòng)態(tài)HTML(比如JSP)根本不適合JavaScript RIA程序的開(kāi)發(fā),不但組件寫(xiě)起來(lái)非常復(fù)雜,而且使用起來(lái)也是非常復(fù)雜,還跟容器密切相關(guān),增加調(diào)試和測(cè)試的難度。

          希望樓主能夠細(xì)致的講解一下具體的設(shè)計(jì)方案,尤其是在非侵入式動(dòng)態(tài)HTML頁(yè)面開(kāi)發(fā)、怎么與業(yè)務(wù)邏輯層無(wú)縫結(jié)合還有怎么進(jìn)行良好的開(kāi)發(fā)和配置方便的服務(wù)端頁(yè)面流和頁(yè)面導(dǎo)航上(這一點(diǎn)Tapestry做的就很不錯(cuò))。

          至于頁(yè)面風(fēng)格的變化,CSS就已經(jīng)很強(qiáng)了,還可以通過(guò)SiteMesh進(jìn)行框架的修飾,這個(gè)方面應(yīng)該是比較成熟的了。  回復(fù)  更多評(píng)論   

          # re: RIAWork介紹之一:關(guān)注界面和交互的靈活變化 2006-05-11 11:08 BlueDavy

          @IUSR
          "無(wú)污染Html",指的是按照正常軟件開(kāi)發(fā)流程,由美工切割系統(tǒng)原型圖后形成的html,不允許這些html帶有script,要做到這些html只是定義了結(jié)構(gòu)而已,保持web頁(yè)面的結(jié)構(gòu)、表現(xiàn)、行為的分離。
          侵入性decorator我指責(zé)的就是侵入性decorator仍然會(huì)產(chǎn)生很大量的UI集成工作,這種情況在業(yè)務(wù)系統(tǒng)中也許碰到的不多,但在一種B/S網(wǎng)站式的系統(tǒng)中會(huì)出現(xiàn)很多,可以想像一下如果象sina、taobao這樣的大型B/S系統(tǒng),采用侵入性decorator方式時(shí),如果要替換一下他們的界面是多么耗工作量的事,而無(wú)侵入性decorator則可以做到直接將美工切割形成的html替換上去就OK了....
          在RIAWork中采用html作為界面,采用附加的對(duì)于html的描述來(lái)decorator出系統(tǒng)的動(dòng)態(tài)性質(zhì),就像我所說(shuō)的,保持靜態(tài)性質(zhì)和動(dòng)態(tài)性質(zhì)的分離,而在現(xiàn)有的框架中,Tapestry算是一定程度上保持了靜態(tài)性質(zhì)和動(dòng)態(tài)性質(zhì)的分離,但由于它采用的是侵入式的decorator,我還是不怎么滿(mǎn)意,另外Tapestry并沒(méi)有做到RIAWork所期待的交互變化的支持上.....

          @guitarpoet
          后續(xù)文章介紹中會(huì)重點(diǎn)講在RIAWork中如何實(shí)現(xiàn)靜態(tài)性質(zhì)和動(dòng)態(tài)性質(zhì)的分離并最終將靜態(tài)html轉(zhuǎn)變?yōu)榭蛇\(yùn)行的動(dòng)態(tài)系統(tǒng)...
          Tapestry的實(shí)現(xiàn)我也很認(rèn)同,不過(guò)它仍然沒(méi)有足夠的做到對(duì)于界面和交互的靈活變化的支撐,它的html手工編寫(xiě)仍然是不可避免的,我的出發(fā)點(diǎn)更多的是從界面以及交互的快速變化的支撐上考慮,至于框架的擴(kuò)充和擴(kuò)展會(huì)在后續(xù)章節(jié)上專(zhuān)門(mén)介紹...
          頁(yè)面風(fēng)格、布局的變化確實(shí)一定程度上都可以通過(guò)css去控制,但某些復(fù)雜情況下僅僅依靠css也是不夠的,這個(gè)時(shí)候最好是有一種直接替換html的方式,那豈不是更簡(jiǎn)便和更靈活,^_^   回復(fù)  更多評(píng)論   

          公告

           









          feedsky
          抓蝦
          google reader
          鮮果

          導(dǎo)航

          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統(tǒng)計(jì)

          隨筆分類(lèi)

          隨筆檔案

          文章檔案

          Blogger's

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 大丰市| 华池县| 奈曼旗| 盐源县| 天水市| 宁阳县| 山阳县| 昌图县| 瓮安县| 健康| 图片| 顺义区| 邯郸市| 杭锦旗| 务川| 长海县| 满洲里市| 遵化市| 车险| 天峨县| 大悟县| 山东省| 开鲁县| 泸定县| 沅江市| 抚宁县| 云浮市| 望都县| 兴文县| 敖汉旗| 乐平市| 昌吉市| 宁明县| 奎屯市| 都昌县| 博罗县| 突泉县| 逊克县| 漳浦县| 招远市| 云梦县|