java 板


LINE

最近因為在學習 zk ,所謂學而不思則惘,一直想來寫點介紹文, 順便找點同好聊聊,開個討論串來討論討論這個主軸帶點討論風氣。 對於 zk 我目前因為接觸不深,還是比較難用比較完整的角度來陳述, 因為 zk 本質上是一個在各個細節都非常注重的東西, 每個小細節幾乎都可以開一個主題, 有些東西我也是才疏學淺,還有待大家一起討論研究。 畢竟這是一個試圖在 web 世界中,做出一個 ajax solution 的framework。 ----------------------------------------------------- 所以我打算先以完全沒接觸過的使用者的觀點,寫一寫我接觸時眼中的zk。 這篇的主軸一半的背景知識會是web(html+javascript+css), 另一半則是 J2EE (Java/servlet/container(tomcat)) 等。 zk 最早給我的印象是他是個在國外比較紅的 framework , 另外就是它是個 ajax framework 。 ----------------------------------------------------- 對,我們的話題就從 ajax framework 開始。 ----------------------------------------------------- 我的 ajax 領域經驗雖然還不算深, 但也曾經接觸過一些 ajax 應用專案,參與過其中的流程開發, 曾有過一些經驗,我很難想像,ajax 怎麼可能能夠做得成模組化? 畢竟幾乎每個 request 都是需要自己去設計規格, 去掌握每個 param 的傳遞,回來自己動手做每件後續的處理, 回傳到頁面時自己掌握前端的頁面呈現。 就算我們用 struts 來管理破碎頁面的呈現, 或者是像ruby 語言的 RoR 這種提供豐富環境支援的環境, 要做到 ajax 的模組化跟架構化,一直都是一個很困難的事情。 而我們搞 F2E (Front-to-End 網頁前端技術)的人, 整天和 javascript/css 打交道, 最麻煩的就是隨時要在 server /client 兩個不同領域繞來繞去。 我一向要煩惱 db 要怎麼撈資料,他會噴什麼資料給我, 另一邊要煩惱行為畫面應該要怎麼做,才能符合案主需求。 而且很多時候其實我會用到很多重複的零組件, 其中最經典的莫過於就是表單驗證了,我很早就為此寫過一隻小lib。 #15v04i62(ajax) 或者是一些諸如日期選單、tabbox 等等。 看看每天在 web_design/ajax 討論 plug-in 的類型跟用途的人, 跟一堆討論要怎麼透過javascript 操作資料的人, 就不難發現其實很多東西是一再被提到、被用到, 一再的在我們的開發工作中出現的東西。 ----------------------------------------------------- zk 本質上就是一個 base on J2EE 的架構, 如果你 deploy 過 struts 或者一些 J2EE web framework, 它就跟他們一樣,有一些 jar檔。(你可以在zk官方網站上下載) http://www.zkoss.org 你可以 build 一個 zk web application , 透過建立一個 webapp ,放到 tomcat底下的webapps資料夾, 設定好 context ,把 zk 的 jar 丟到 WEB-INF/lib 。 把 server 開起來, ok ,你現在就有一個 zk 的環境了。 就像是正常的 J2EE project 一樣,更簡單的方式是拿一個包好的 war 檔, 丟到 web apps 資料夾,讓 tomcat 自己佈署。 我要表達的是,只要你寫過其他 J2EE project , 那 zk 在架設跟佈署上是差不多的。 如果你沒寫過 J2EE 的 project ,那應該也沒關係, 網路上有很多參考資料,而且官方也有文件,雖然說都是英文的。XD ----------------------------------------------------- 在我們「概念上」的佈署完一個 project 之後, zk 在實務開發時,主要會透過撰寫 "zul" 檔來進行開發。 這個 zul 檔類比到一般的 J2EE application , 就可說等於是 JSP 的角色,他會負責外觀的呈現跟一些事件的處理。 他是一個 xml 檔,就跟一般的 html 一樣是採用一堆 <xxx> 的 tag 格式, 基本上進入 zk 的第一個門檻大多會出現在 zul 的學習上, 因為你能用的 tag 主要是由 zk 定義給你的。 (當然zk 非常貼心的,基本的 div / label 等等,該有的都有。) 一個簡單的範例可以幫助我們快速進入狀況 <zk> <label value="hello world" /> </zk> ----------------------------------------------------- 這樣會轉譯成這樣的 html : <span id="z_rrk_01" class="z-label">hello world</span> ----------------------------------------------------- 夠簡單的 hello world 吧。XD 基本上因為一開始學 zul ,我在很多的 component 中一直迷惑, 我到底要用哪些,所以在這裡我打算先點出幾個常用的經典 component 。 資料呈現方面 ----------------------------------------------------- <label value="文字" /> 簡單的 span 就是個文字呈現 ----------------------------------------------------- <div> div 這老傢伙不用解釋了吧 - -;; 就跟一般的網頁div是一樣的。 <label value="文字" /> <label value="文字" /> </div> ----------------------------------------------------- <grid> 強化版的表格 詳細範例可看下列連結 http://www.zkoss.org/zksandbox/userguide/#g2 中間有個「view source」,打開來可以看到原始碼, 也可以修改原始碼,再按下下面的 try-it 即時體驗。 ----------------------------------------------------- 表單方面也有一些常用元件 http://www.zkoss.org/zksandbox/userguide/#f2 你能想到的 textbox / password / datebox (內建有日期選單的input) , 還有限定輸入資料型態的 intbox longbox 等。 當然也有下拉選單 combobox 、 radio、button等 其實遠不只這些啦,zk component 沒仔細數過,應該有幾十個上百個吧, 這只是如果說要我介紹你前十個,我會先講這些。 事實上還有一些很 powerful 的排版功能, 像是 tabbox , hbox/vbox 系列等。 ----------------------------------------------------- 本來是想一路寫到為什麼可以簡化 ajax problem , 不過沒想到寫到這就快十二點了,所以先暫時收尾在這邊, 剩下的暫時先說下集待續。 在這裡我們目前已經介紹到 zk 透過自定義的 component 跟格式, 來進行 ui 的呈現,眼尖的夥伴們應該也已經發現, 前面範例中有一些像是 datebox 這類的元件是結合 javascript 的操作的。 也就是說,所謂的 component 其實就是預先定義好的 html+css+ js邏輯, 所以在大多數假設中的狀況下,你大多可以找到一個zk提供的功能, 來作到你想要的操作,而不一定需要自己另外寫程式來處理。 而 zk 的元件都走 css 風格,除非必須配合 javascript 設定的屬性, 否則一律都是走 css 風格,你也可以採用定義自己的css的方式蓋掉他。 或者是寫一個自己的 component , 甚至是 zk 也有提供讓你在 zul 中寫原本的html tag 的貼心設計。 寫 zul 要像是寫原本的 html 也是完全做的到的。 ----------------------------------------------------- 在常用元件的部份,zk提供一些有趣的組件,但由於篇幅跟時間的關係, 對於 component 的介紹或許拉到之後比較後面討論到深入的實做時再講。 下一篇要提到為什麼能夠因此簡化 ajax 、頁面呈現的操作, 跟一些常見的網頁事件的處理該如何進行,我覺得這些都是非常有趣的部份。 -- 這裡有 zk 自己的官方 demo http://www.zkoss.org/demo/ 我個人會推薦底下這兩個,zk calender 跟zk grid 的有趣應用。:) http://zcal.zkoss.org/ http://www.zkoss.org/zkdemo/grid/master_detail -- I am a person, and I am always thinking . Thinking in love , Thinking in life , Thinking in why , Thinking in worth. I can't believe any of what , I am just thinking then thinking , but worst of all , most of mine is thinking not actioning... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.82.21.118 ※ 編輯: TonyQ 來自: 111.82.21.118 (10/05 00:12)
1F:→ TonyQ:具體的怎麼寫 zul ,寫出來的東西長怎樣,咱們下篇再聊。XD 10/05 00:13
2F:推 wannawanna:推! 10/05 00:31
※ 編輯: TonyQ 來自: 220.133.44.37 (10/05 10:07)
3F:→ qrtt1:有看有推 10/05 12:47
4F:推 kroll:有看有推 10/05 17:26
5F:推 dwi2:推! 10/05 20:14
6F:推 luoqr:推 10/05 22:31
7F:推 ccc0807:有看有推 10/06 18:38
8F:推 youknowme09:期待下集 10/06 19:29
9F:推 slalala:ZK真的很棒...我摸到MVC的部分 真覺得很屌 10/08 23:20







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP