隨筆 - 115  文章 - 481  trackbacks - 0
          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿(19)

          隨筆檔案(115)

          文章檔案(4)

          新聞檔案(1)

          成員連接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          需要什么樣的mvc

            在基于B/S的應用程序開發中,從基本的技術分工上來說就是兩大塊,一是軟件顯示界面,另一個是程序邏輯。在N年前的腳本語言時代,無論是asp、php還是jsp,我們基本是都是把這兩者柔和在一起的。盡管我們想方設法做好很多函數或者包含文件來努力達到軟件的復用,但仍然無法滿足多變的用戶需求,這主要是因為以前的純腳本編碼方式無法很好支持及應用面向對象(OO)領域中的強大功能。

            在常見的B/S軟件項目中,界面的設計包括html界面、Wap界面及其它由文本字符協議為基本表示的界面等。以我們接觸最多的html頁面為例子,在做這些界面的時候往往需要美工先使用photoshop或fireworks等圖形界面設計工具進行全局設計,然后再使用進行Dreamweaver等html頁面制作工具進行加工制作。而強大的程序邏輯及后臺處理都是由服務器端程序完成,這些程序具有較高的穩定性,其開發工具如JBuilder、Eclipse等對View層的界面無法很好的支持(當然那些用記事本寫界面的應用除外),這就使得很多MVC框架的設計都無法兩全齊美。

            隨著Struts等MVC框架的陸續出現及應用,我們的視圖層變得越來越簡單。然而,仍然不時需要在頁面中插入Java代碼,比如另人討厭的@<import>。這些MVC框架大多提供了一系列的自定義標簽,當自定義標簽越來越復雜的時候,對于程序員簡單的同時,卻把咱們的美工及頁面制作人員給嚇壞了。


          頁面及程序如何分離

            EasyJWeb作為一個快速Java Web MVC框架,其設計目標不盡是要簡化軟件開發人員的代碼書寫工作,更是要能方便界面設計人員的工作。EasyJWeb通過基于模板的方式,建立在強大而簡單的模板引擎Velocity基礎上,并對Velocity作了一定的擴充。

            Velocity是一個基于java的模板引擎(template engine),它允許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。作為一個比較完善的模板引擎,Velocity的功能是比較強大的,但強大的同時也增加了應用復雜性。

            理論上你可以在EasyjWeb模板使用所有Velocity的腳本及功能,但我們不推薦你在界面模板中使用過多過復雜的腳本表達方式,在萬不得已的情況下,不要在界面模板中加入任何復雜的邏輯,更不要在界面模板中加入變量聲明、邏輯運算符等等。

            在EasyJWeb中,我們提供了四條基本的模板腳本語句,基本上就能滿足所有應用模板的要求。這四條模板語句很簡單,可以直接由界面設計人員來添加。在當前很多EasyJWeb的應用實踐中,我們看到,所有界面模板中歸納起來只有下面五種簡單模板腳本語句即可實現:
            1、$!obj  直接返回對象結果。  
            2、#if($!obj) #else #end 判斷語句
            3、#foreach( $info in $list) $info.someList #end  循環讀取集合list中的對象,并作相應的處理。
            4、#macro(macroName)#end 腳本函數(宏)調用,不推薦在界面模板中大量使用。
            5、包含文件#inclue("模板文件名")或#parse("模板文件名")

            關于EasyJWeb及Velocity腳本的更多內容,請看:EasyJWeb-Velocity腳本簡明教程 http://www.easyjf.com/easyjweb/EasyJWeb-Velocity.htm

            EasyJWeb另外提供了很多工具類,通過這些工具類可以大大簡化模板的書寫。比如CommUtil中的toRowChildList,TagUtil中的options等。
            通過使用Velocity模板腳本,可以使得視圖中除了與數據顯示有關的內容以外,不再有其它任何與特定語言相關的標記或符號。由于Velocity模板對界面不具備任何破壞性,因此就算添加了一系列的模板標記后,美工及頁面制作人員不用作任何額外的特殊處理,就能看到純天然的界面視圖。另外還能通過半小時就能學會了解Velocity腳本的用法,根據客戶的審美觀、習慣乃至心情靈活的更改系統界面。

          方便他人即是方便自己

            EasyJWeb之所以提倡頁面模板及程序分離,一個重要原因就是解放程序員。給他人方便就等于給自己方便,EasyJWeb中包含了這樣的生活哲學。因此,作為程序員,接觸一段時間EasyJWeb后,你會發現除了讓視圖界面的人員方便的以外,EasyJWeb最主要關照的還是咱們這些審美觀經常被批評,最討厭那些亂七八糟的html代碼,css樣式以及患有圖片恐懼癥的程序員。因此,EasyJWeb讓程序員非常輕松與視圖層的內容打交道。比如要把一個對象發送給視圖層,只需要在Action中使用form.addResult(“name”,obj)即可,要把一個對象分成各屬性發送給視圖層,可以直接使用form.addPo(obj)方法即可;要從視圖層表單中讀取數據到對象中,只需要form.toPo(obj)即可;EasyJWeb為了處理了數據轉換、驗證、數據保護等諸多細節。

          posted on 2007-08-21 09:27 簡易java框架 閱讀(974) 評論(2)  編輯  收藏

          FeedBack:
          # re: 讓代碼與視圖模板的分離  2007-08-21 13:33 編程、設計是職業更是愛好
          實際上,還可以做的更好。對于UI/HTML設計人員來說,最友好的就是code里沒有令人生厭的自定義tag,的確,現在的MVC在濫用tag,完全把server數據和console顯示混在一起,表面上自己方便了,實際上在給別人制造麻煩。我不喜歡struts, 尤其是其中的tag,并不是杜絕所有tag,而是有一兩個夠用的即可,比如i18n & templage inlcude。
          此外,作為框架,必需有能夠方便UI/HTML進行設計、編碼的機制,不要試圖讓這些人員去裝任何運行環境,對他們來說,Editplus就應足矣了。
          如果有興趣我們可以深度討論。  回復  更多評論
            
          # re: 讓代碼與視圖模板的分離  2007-08-23 14:23 beans
          使用模板機制確實是我的最愛,這是我們項目中不選擇JSF的原因。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 枣强县| 林西县| 曲阜市| 井研县| 云梦县| 监利县| 沾化县| 辽中县| 正宁县| 永新县| 富源县| 台湾省| 宁乡县| 宜良县| 桦甸市| 黔江区| 礼泉县| 保定市| 吉林省| 平乡县| 昌吉市| 泽普县| 皮山县| 玉屏| 宜宾县| 衡阳市| 庆安县| 通化市| 花莲市| 革吉县| 旌德县| 阿尔山市| 汾阳市| 东源县| 饶河县| 南乐县| 云龙县| 伊吾县| 宝应县| 泰安市| 玛沁县|