- 企業(yè)級Web開發(fā)實戰(zhàn)
- 雨虹等編著
- 3678字
- 2018-12-27 14:19:37
2.2 一切從瀏覽器說起
上面我們提到Ajax包含DOM、JavaScript、XML、JSON等各種技術(shù),那么,Ajax又是怎樣將這些技術(shù)整合在一起的呢?“知今必先通古”,要想了解這一切,還需要從互聯(lián)網(wǎng)和Web瀏覽器的發(fā)展歷史開始說起。
2.2.1互聯(lián)網(wǎng)和HTML的誕生
1985年,美國國家科學(xué)基金組織(NSF)采用TCP/IP協(xié)議將分布在美國各地的6個為科研教育服務(wù)的超級計算機中心互聯(lián),并支持地區(qū)網(wǎng)絡(luò),形成NSFnet,這標(biāo)志著Internet的誕生。
1988年,Internet開始對外開放。1989年,Tim Berners-Lee(蒂姆·本尼斯李,見圖2-3)根據(jù)當(dāng)時的印刷行業(yè)規(guī)范SGML制定了HTML(Hyper Text Markup Language)。超文本是指信息內(nèi)容的組織方式是非線性的,可以根據(jù)人的聯(lián)想方式進行跳轉(zhuǎn),常見的文字、課本、電視、錄像等是線性的、不能跳轉(zhuǎn)的,只能固定從一頁到另一頁或從一個鏡頭接另一個鏡頭,而人類的思維方式是非線性的,可以對某些概念進行發(fā)散和跳轉(zhuǎn)。1945年,美國計算機科學(xué)家范尼瓦·布什就提出了“有思維的人和所有的知識之間建立一種新的關(guān)系”,但是他沒有提出明確的概念。美國人泰得·納爾遜在1965年最先提出了超文本這個詞匯,后來得到世界的公認(rèn),成了這種非線性信息管理技術(shù)的專用詞匯。而HTML就是非線性內(nèi)容的表達(dá)語言,允許從當(dāng)前閱讀位置直接切換到超文本鏈接所指向的目標(biāo);允許人們透明地共享網(wǎng)絡(luò)上的信息,即使人們使用的計算機差別很大。HTML具備以下特點:

圖2-3 “萬維網(wǎng)之父”、HTML發(fā)明人——Tim Berners-Lee
■ 獨立于平臺,即獨立于計算機硬件和操作系統(tǒng)。這個特性是至關(guān)重要的,因為在這個特性中,文檔可以在具有不同性能(即字體、圖形和顏色差異)的計算機上以相似的形式顯示文檔內(nèi)容。
■ 超文本。允許文檔中的任何文字或詞組參照另一文檔,這個特性將允許用戶在不同計算機中的文檔之間及文檔內(nèi)部漫游。
■ 精確的結(jié)構(gòu)化文檔。該特性將允許某些高級應(yīng)用,如HTML文檔和其他格式文檔間互相轉(zhuǎn)換,以及搜索文本數(shù)據(jù)庫。
由于HTML的這些特點,HTML一經(jīng)推出就得到廣泛的應(yīng)用,并推動了Internet的發(fā)展。1991年,在連到Internet的計算機中,商業(yè)用戶首次超過了學(xué)術(shù)界用戶,這成為Internet發(fā)展史上的一個里程碑。
使用HTML標(biāo)識的文檔僅僅是一個文檔,而Web瀏覽器則是HTML的解析器和HTMLHTMLhtml,渲染器。為了更好地表現(xiàn)HTML,1993年,美國超級計算機應(yīng)用中心(NCSA)開始構(gòu)建Web瀏覽器,把自己需要的特性添加到HTML中,包括直接插入圖形和圖表。這時的瀏覽器主要還是在學(xué)術(shù)界使用,顯示在屏幕上的也只有一行一行的代碼與數(shù)據(jù),并沒有圖形用戶界面。伊利諾斯州大學(xué)的學(xué)生馬克·安德森改變了這種狀況,發(fā)布了世界上第一個只需通過鼠標(biāo)點擊圖形界面就可以瀏覽互聯(lián)網(wǎng)的程序——Mosaic瀏覽器,1993年第一個面向普通用戶的Mosaic 1.0發(fā)布。Mosaic的最大特色就是具有方便易用的圖形界面,人們通過Mosaic,可以方便地閱讀嵌有位圖、照片和圖表的HTML文檔,并且可以自由地跳轉(zhuǎn)。Mosaic是第一個被人普遍接受的瀏覽器,它讓許多人了解了Internet,因此馬克·安德森也被稱為互聯(lián)網(wǎng)瀏覽器之父。
1994年,當(dāng)時開發(fā)Mosaic瀏覽器的馬克·安德森和其他人聯(lián)合成立Netscape(網(wǎng)景)公司,并在當(dāng)年年底推出了Mozilla 1.0,這是當(dāng)時第一款商業(yè)Web瀏覽器。NCSA開發(fā)的Mosaic瀏覽器是專門針對學(xué)術(shù)界使用的,Netscape開發(fā)的Mosaic則強調(diào)其瀏覽器是面向普通用戶和普通帶寬的,并且它不論在技術(shù)上還是在市場宣傳方面都要比NCSA強大。Netscape的Mosaic(后來改名為Mozilla)瀏覽器提供了很多強大的瀏覽器新特性,并承諾其瀏覽器支持當(dāng)時所有的主流操作系統(tǒng):Windows、Macintosh和UNIX,還把當(dāng)時Internet上3個主要的技術(shù)Web、Mail和News Group都集成到Mozilla瀏覽器中,這一切都極大地提高了Mozilla的市場占有率,同時也加快了HTML和Web的發(fā)展。1994年年底,Internet上Web應(yīng)用的網(wǎng)絡(luò)流量首次超過電信系統(tǒng)的流量,位居FTP網(wǎng)絡(luò)流量之后;到1995年4月,Web應(yīng)用的流量就超過了FTP,成為Internet上最主要的應(yīng)用了。
剛開始Mozilla在市場上的占有率很高,幾乎沒有什么瀏覽器能和其抗衡。1995年1月,Microsoft在發(fā)布Windows 95操作系統(tǒng)的同時,也發(fā)布了Internet Explorer 1.0,這款Web瀏覽器幾乎就是Mosaic的翻版,同時又是和操作系統(tǒng)捆綁在一起的,因此受到人們的詬病,但是也免除了用戶手動安裝Web瀏覽器的麻煩,使得更多的人得以接觸Internet。從此Web瀏覽器市場上開始了Netscape和Microsoft兩家鼎立的局面,并展開了長達(dá)十多年的競爭。在1995年夏,Netscape憑借瀏覽器強大的功能(框架、Java、JavaScript和插件支持),占據(jù)80%的市場,在1995年中期到1996年年末的這一段時間中,兩家公司競爭更加白熱化,大概每個星期都會有一個Web瀏覽器的版本出現(xiàn),競爭的結(jié)果則是不斷有新的Web瀏覽器版本和新的HTML特性出現(xiàn)。這一時期的HTML發(fā)展很快,新的HTML標(biāo)記不斷被瀏覽器引入,有一些新標(biāo)記流行起來,而有一些又消失了;有些增加部分設(shè)計得很糟,很多甚至不遵從SGML規(guī)范,這使得HTML的發(fā)展出現(xiàn)了混亂。
2.2.2 HTML的發(fā)展
1995年11月,在瑞士日內(nèi)瓦舉行的第一次WWW會議上成立了一個HTML工作小組(World Wide Web Consortium's HTML Working Group)。它的主要任務(wù)是把HTML形式化成一種SGML DTD,稱之為HTML Level 2(HTML 2.0,RFC1866,由蒂姆·本尼斯李最初設(shè)計的HTML被定義為Level 1)。盡管有關(guān)的各方從來沒有取得完全一致的共識,但萬維網(wǎng)聯(lián)盟HTML工作組還集中了1996年萬維網(wǎng)發(fā)展的成果,產(chǎn)生了HTML 3.2版本。
HTML 3.2及其以后版本繼承了以前版本的所有特點,并在以下幾個方面有所發(fā)展。
■ 更加明確了文檔的結(jié)構(gòu)和表現(xiàn)形式上的區(qū)別,以鼓勵使用格式表(Style Sheet)來取代使用元素和屬性進行表現(xiàn)的方式。
■ 更加優(yōu)良的表單性能,加入了訪問關(guān)鍵詞(Access Key),構(gòu)建對稱的表單控件能力,構(gòu)建對稱的下拉菜單控件的能力和動態(tài)標(biāo)簽。
■ 在文本描述的標(biāo)記中包含對象。
■ 一種新客戶端的文本包括在圖像映射元素(<map>)中,使得網(wǎng)頁設(shè)計者可以集成文本和圖像鏈接。
■ 可以將替代圖像的文本包括在圖像元素(<img>)中,也可以將圖像映射(image map)包含到區(qū)域元素(<area>)中。
■ 在所有元素中支持title和language兩個屬性。
■ 更多的表格屬性,包括caption、column groups和方便的非可視信息(Non-visual Reading)的表現(xiàn)機制。
在HTML規(guī)范以后,HTML的發(fā)展逐步走上有序發(fā)展的道路,但HTML并沒有停止發(fā)展,Microsoft在1997年推出的IE 4.0中首次提出了DHTML(Dynamic HTML,動態(tài)HTML)的概念,成為近年來網(wǎng)絡(luò)發(fā)展進程中最振奮人心也最具實用性的創(chuàng)新之一。在沒有DHTML之前,HTML是靜態(tài)的,一旦頁面加載完畢,它就像一個畫面,怎么看也不會發(fā)生變化,如果要改變元素只能重新編寫HTML代碼。DHTML改變了這種情況,Web開發(fā)人員可以編寫相應(yīng)的代碼,在不刷新頁面的情況下動態(tài)改變元素的屬性,動態(tài)HTML就意味著Web頁面對用戶有響應(yīng),即HTML能自動變化。
為了解DHTML,我們可以先來看一看微軟中國站點中的一個重要界面特性——當(dāng)瀏覽者將鼠標(biāo)指針移動到頁面導(dǎo)航條上時,會動態(tài)地彈出一個菜單,在該菜單中移動鼠標(biāo),所指向的菜單項字體變?yōu)闇\綠色顯示;如果將鼠標(biāo)指針移出菜單所在范圍,則菜單自動隱藏;如果將鼠標(biāo)指針移動到導(dǎo)航條上另外一個區(qū)域,則會彈出另外一個菜單(見圖2-4)。

圖2-4 Microsoft網(wǎng)站DHTML效果圖
為了實現(xiàn)這種自動變化的動態(tài)效果,首先,DHTML需要一種方法查閱文檔,跟蹤頁面上的每個元素,包括從最小的<H6>標(biāo)題和<HR>水平標(biāo)尺,到表單中所有元素。從本質(zhì)上說,每當(dāng)頁面被加載時,瀏覽器就建立起一個數(shù)據(jù)庫,每個標(biāo)記就成為數(shù)據(jù)庫中的一個記錄,這個數(shù)據(jù)庫就稱作文檔對象模型(Document Object Model, DOM),即把整個文檔看作一個連續(xù)的對象模型(在下一節(jié)我們將詳細(xì)講解DOM)。其次,DHTML還需要一種方法來控制一個文檔中所有需要控制的元素,這可以通過一些腳本語言來完成,例如JavaScript或VBScript,腳本元素可以精確控制頁面上的各個節(jié)點,使之發(fā)生預(yù)想的變化,如在一個菜單項中對應(yīng)的內(nèi)容。為了表現(xiàn)頁面上的變化,還需要用一些設(shè)置頁面的屬性,如字體顏色變化等,這一般由CSS來完成。因此,DHTML實際上是DOM、JavaScript和CSS的集合,它們共同組成了DHTML的全部內(nèi)容。
憑借IE 4.0推出的DHTML等強大的功能,IE打敗了Netscape,逐漸成為Web瀏覽器市場的主流,并把這種霸主地位一直保持到今天。不久W3C的HTML工作組吸收了DHTML的優(yōu)點,正式承認(rèn)了在Web頁面中的動態(tài)效果,在代號為Cougar的HTML 4.0版本中,W3C把動態(tài)超文本的實現(xiàn)分為了3個部分:腳本、支持動態(tài)效果的瀏覽器和CSS,而支持動態(tài)效果的瀏覽器,則是指實現(xiàn)了DOM規(guī)范的Web瀏覽器。
時至今日,微軟的IE已經(jīng)成為市場占有率最高的瀏覽器,Netscape的市場份額逐漸縮小,Netscape在2008年3月1日正式退出瀏覽器舞臺。但是互聯(lián)網(wǎng)上的瀏覽器之戰(zhàn)并沒有結(jié)束,反而愈演愈烈,基于Netscape內(nèi)核的Firefox發(fā)展迅速,不斷搶占IE的市場份額,Opera、Safari等也在不斷崛起;而互聯(lián)網(wǎng)巨頭Google也不失時機地在2008 年9月2日正式推出了自己的瀏覽器Chrome,以整合自己在互聯(lián)網(wǎng)上的應(yīng)用。因此,正如前微軟首席執(zhí)行官比爾·蓋茨在總結(jié)IE瀏覽器市場份額超過Netscape時所說的那樣:“這一切都將繼續(xù)”。
從HTML的發(fā)展歷史我們可以看出,HTML和Web瀏覽器的發(fā)展是相互促進的。從某種意義上來說,Web瀏覽器就是互聯(lián)網(wǎng)的引擎,Web瀏覽器的不斷發(fā)展,使HTML的表達(dá)能力更加豐富;Web瀏覽器提供的功能越多,HTML的表現(xiàn)力也就越豐富。作為例證,Netscape最先在Mozilla上提供了JavaScript、框架和插件等功能,這些功能提高了HTML頁面和用戶的交互性,很快IE也提供了類似的功能。而最有證明性的例子則是IE提供的XMLHttpRequest對象,也就是我們所說的Ajax功能,是IE5.0中推出的一個特性,允許用戶局部刷新HTML頁面,而這個特性很快得到Mozilla和Safari等Web瀏覽器支持,成為事實上的標(biāo)準(zhǔn)。
從HTML和Web瀏覽器的發(fā)展歷史中我們也可以看到,Web應(yīng)用從來都不是單純的HTML開發(fā),還要涉及Web瀏覽器特性的開發(fā)。Web瀏覽器支持的特性很多,而我們需要關(guān)注的是那些最主流的特性,如DOM、CSS、JavaScript等,這些內(nèi)容將在接下來的章節(jié)中介紹。
- Hands-On Internet of Things with MQTT
- Practical Ansible 2
- Effective DevOps with AWS
- 大數(shù)據(jù)處理平臺
- Photoshop CS3圖像處理融會貫通
- 基于ARM 32位高速嵌入式微控制器
- Windows 7寶典
- HTML5 Canvas Cookbook
- 教育機器人的風(fēng)口:全球發(fā)展現(xiàn)狀及趨勢
- Spatial Analytics with ArcGIS
- 液壓機智能故障診斷方法集成技術(shù)
- Mastering Geospatial Analysis with Python
- 生物3D打?。簭尼t(yī)療輔具制造到細(xì)胞打印
- Mastering Predictive Analytics with scikit:learn and TensorFlow
- 玩機器人 學(xué)單片機