Ajax(Asynchronous JavaScript + XML)并不是一個革命性的嶄新概念(也許根本就不存在突發(fā)的革命),它的技術(shù)基礎(chǔ)在多年之前就已經(jīng)牢固的建立起來了,在概念層次上的探討也早就不是一個新鮮的話題,只是大規(guī)模的有深度的應(yīng)用似乎是最近才開始的。 從廣義上說,web應(yīng)用至少涉及到兩個結(jié)構(gòu), 1. 后臺以java語言表達(dá)的業(yè)務(wù)邏輯結(jié)構(gòu) 2。前臺以html語言表達(dá)的界面表現(xiàn)結(jié)構(gòu)。 web開發(fā)很大一部分工作就是建立這兩個結(jié)構(gòu)之間的關(guān)系。即我們需要 我們首先要意識到這兩種結(jié)構(gòu)之間并不一定是同構(gòu)的,即后臺數(shù)據(jù)的組織方式與前臺展現(xiàn)時的結(jié)構(gòu)是不同的。同樣的數(shù)據(jù)可以對應(yīng)于不同的展現(xiàn)結(jié)構(gòu)。這也是所謂MVC架構(gòu)實(shí)現(xiàn)模型與視圖分離的依據(jù)。傳統(tǒng)上,基于Model2模式的MVC框架中,這兩種結(jié)構(gòu)的映射只能在很粗的粒度上進(jìn)行(即整個頁面的粒度上),因此妨礙了封裝和重用。為了進(jìn)行細(xì)粒度的映射,我們必須要擁有細(xì)粒度的結(jié)構(gòu)控制能力。而目前最強(qiáng)的結(jié)構(gòu)控制能力存在于javascript/DHTML模型之中,在js中html的結(jié)構(gòu)可以是一段線性的文本(innerHTML和outerHTML), 可以是層級組織的節(jié)點(diǎn)(parentNode, childNodes), 也可以是按照key組織起來的Map(getElementById)。在不同的情形下,我們可以根據(jù)需要選擇不同的結(jié)構(gòu)模型。 |
|