下一代的B/S開發框架--Echo 教程(7) (轉)
下一代的B/S開發--Echo 教程(7)
編寫自己的
羨慕EchoPoint的控制元件嗎? 別擔心, 你一樣可以做.
寫控制元件可以分兩種方法: 搭積木和造積木.
A: 搭積木
在教程(5)中, 我們實現了可編輯的下拉選單. 其實不過是一些已有控制元件的組合, 就象搭積木一樣. 注意: 在OO中, 這些搭出來的積木是可重用的, 就象在Echo Demo中可以隱藏的幫助區域.
在製作網站的過程中, 我們通常會把頁面劃分成幾個大區域, 每個大區域又可以劃分成幾個小的區域. 在不同頁面這些區域大部分都是重複的, 或者稍有變化. 比如Banner/導航條/購物車. 我們可以把它們包裝成獨立的控制元件, 並且實現動態效果.
在HTML中, 我們經常會用到CSS來改變網站的風格. 在Echo中, 可以自行擴充套件每個Echo控制元件. 然後用這些擴充套件的控制元件來構造你的網站. 這樣似乎有些Crazy, 但是想想看: 調整這些控制元件, 網站的整體風格會一起改變. 甚至你對控制元件增加功能, 讓每個輸入框在"向下"鍵時都自動Tab到下一個. 這些工作在傳統網站製作中浪費了很多時間.
B: 造積木
Echo不會讓JS高手失業. 它只會讓你告別枯燥無味的重複勞動, 專注於開發高難度的控制元件. 這裡給出一個在頁面上構造Link的例子. 它的Component很簡單:
package org.steeven.component; import nextapp.echo.Component; public class Link extends Component { private String text; private String url; public Link(String text,String url) { this.text = text; this.url = url; } public Link(String url) { this(url,url); } public String getText() { return text; } public String getUrl() { return url; } public void setText(String newValue) { String oldValue = text; text = newValue; firePropertyChange("text", oldValue, newValue); } public void setUrl(String newValue) { String oldValue = url; url = newValue; firePropertyChange("url", oldValue, newValue); } }
下面是負責輸出為HTML的Peer類:
package org.steeven.component; import .beans.*; import nextapp.echo.*; import nextapp.echoservlet.html.*; public class LinkUI extends ComponentPeer implements PropertyChangeListener { public static void register() { //名為:PeerBindings.properties, 在相同目錄下 EchoServer.loadPeerBindings("org.steeven.component.PeerBindings"); } public void propertyChange(PropertyChangeEvent e) { redraw(); } public void registered() { getComponent().addPropertyChangeListener(this); } public void unregistered() { getComponent().removePropertyChangeListener(this); } public void render(RenderingContext rc, Element parent) { Link link = (Link) getComponent(); Element element = new Element("a", false); element.addAttribute("target","_blank"); element.addAttribute("href", link.getUrl()); element.addText(link.getText()); parent.addElement(element); } }
關鍵部分就在render()方法中. 具體操作類似, 它構造了一小段HTML: text. 注意幾點:
- 引數RenderingContext提供了HTTP資訊和當前文件資訊. 要透過它新增全域性指令碼和CSS.
- 更多資訊請參考Echo網站上的教程.
- 如果你寫出很好的控制元件可以貢獻給EchoPoint, 具體方式參見EchoPoint主頁.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992977/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 下一代的B/S開發框架--Echo 教程(6) (轉)框架
- 下一代的B/S開發框架--Echo 教程(5) (轉)框架
- 下一代的B/S開發框架--Echo 教程(8) (轉)框架
- 下一代的B/S開發框架--Echo 教程(2) (轉)框架
- 下一代的B/S開發框架--Echo 教程(3) (轉)框架
- 下一代的B/S開發框架--Echo 教程(4) (轉)框架
- 最新的B/S開發技術 (轉)
- Xamarin圖表開發基礎教程(7)OxyPlot框架框架
- 系統開發中的B/S架構架構
- B/S開發常用JavaScript技術JavaScript
- Web經典B/S快速開發框架,強大後臺+簡潔UI一體化開發工具Web框架UI
- Phoenix - 基於Elixir的下一代Web開發框架Web框架
- C/S框架網介紹|.NET快速開發平臺|Winform開發框架框架ORM
- 在b/s開發中經常用到的javaScript技術JavaScript
- Hardhat 開發框架 - Solidity開發教程連載框架Solid
- 下一代基於Koa的NodeJS全棧開發框架NodeJS全棧框架
- 重視B/S架構系統的發展和開發設計理念架構
- Echo指南(一) (轉)
- 三星S7怎麼開通VOLTE 三星S7開通與關閉VoLTE教程
- B/S與C/S的區別
- C/S和B/S
- B/S模式安全性探討 (轉)模式
- 最火的前端開發框架Bootstrap使用教程學習!前端框架boot
- windows 7 解決B/S架構相容性的case薦Windows架構
- S2B2C社交電商系統怎麼開發?
- NotaddBeta2fix1,基於Laravel的下一代PHP開發框架LaravelPHP框架
- 搭建雲端計算開發框架(轉)框架
- C/S系統快速開發框架(C#+Winform+SQL)框架C#ORMSQL
- echo二次開發 ecshop 函式列表函式
- C/S,B/S的應用的區別
- MQL5教程7 交易指令碼開發MQ指令碼
- Notadd Beta3 釋出 (基於 Laravel 的下一代 PHP 開發框架)LaravelPHP框架
- 用Java也能象Access一樣快速開發B/S應用?!Java
- Learun.framework v7━ net快速開發框架Framework框架
- 軟體開發之3S方法(轉)
- Koa框架教程,Koa框架開發指南,Koa框架中文使用手冊,Koa框架中文文件框架
- Xamarin圖表開發基礎教程(9)OxyPlot框架框架
- Xamarin圖表開發基礎教程(8)OxyPlot框架框架