這是一個(gè)完全基于js的應(yīng)用程序,區(qū)別于一般的web應(yīng)用,它是oaop。大概需要一些什么樣的工作呢?
大概的概念:
1、容器
是的,需要容器。容器的兩個(gè)目的:布局和管理組件。組件之間的相互通信以及影響都需要容器來(lái)協(xié)調(diào)。管理組件之間的狀態(tài),組件需要向容器進(jìn)行注冊(cè)。對(duì)組件傳播過(guò)來(lái)的事件,容器需要做出處理,調(diào)用相關(guān)其他組件的方法或者忽略或者繼續(xù)向上一級(jí)容器傳播。
2、組件
組件的目的是完全屏蔽對(duì)dom編程的依賴,同時(shí)屏蔽底層的瀏覽器事件,例如鼠標(biāo)單擊、雙擊等等,對(duì)這些事件進(jìn)行完全的封裝。組件有著自己的生命周期:初始化、渲染、重畫、銷毀等等。由組件完成頁(yè)面的渲染工作,例如節(jié)點(diǎn)、畫板、連線等等。
3、模型
在頁(yè)面進(jìn)行建模是必要的,例如活動(dòng)節(jié)點(diǎn)、流程等等,這些模型與組件銜接,它們之間的狀態(tài)互相影響,比如節(jié)點(diǎn)組件名稱的改變實(shí)際影響的是所對(duì)于節(jié)點(diǎn)模型的屬性。畫板節(jié)點(diǎn)的增加實(shí)際也會(huì)給響應(yīng)的流程定義模型新增一個(gè)活動(dòng)節(jié)點(diǎn)。
4、與服務(wù)器交互
與服務(wù)器的交互完全基于xml。流程定義模型有著自己的xml方法,由xml解析為模型,由模型解析為xml,雙向的過(guò)程。本地存儲(chǔ)。很自然的選擇。
可能的難點(diǎn):
最大的難點(diǎn)就是組件的實(shí)現(xiàn),事件的處理以及傳播機(jī)制。
開(kāi)發(fā)的過(guò)程:
1、底層庫(kù)的選擇
面向?qū)ο蟮拈_(kāi)發(fā)方式,底層庫(kù)需要完成的工作:繼承、接口實(shí)現(xiàn)、事件的統(tǒng)一處理接口、element DOM編程的封裝。
2、基本組件的開(kāi)發(fā)
畫板、圖形組件、連線組件、彈出面板、簡(jiǎn)單表格組件、樹(shù)等等。封裝基本的事件??梢远ㄖ剖录?。
3、容器的開(kāi)發(fā),管理組件
組件實(shí)際也是容器的實(shí)現(xiàn),比如畫板的概念。畫板中節(jié)點(diǎn)之間的互相影響。
4、加入模型的支持
5、xml與模型之間的js解析
參考:
ext是一個(gè)不錯(cuò)的參考,但是太笨重,功能越多越緩慢,輕量實(shí)現(xiàn)。主要參考其中容器以及組件的概念。
draw2d 實(shí)現(xiàn)太簡(jiǎn)單,基本就是一個(gè)圖形庫(kù),考慮其中對(duì)圖形組件的實(shí)現(xiàn)。
http://www.tkk7.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
posted on 2008-02-13 22:08
ronghao 閱讀(2984)
評(píng)論(4) 編輯 收藏 所屬分類:
ajax相關(guān)