天天看點

《JavaScript面向對象程式設計指南(第2版)》——1.2 浏覽器的戰争與複興

本節書摘來自異步社群《javascript面向對象程式設計指南(第2版)》一書中的第1章,第1.2節,作者:【加拿大】stoyan stefanov著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

無論結果是好是壞,javascript都在随後爆發的第一次浏覽器大戰(大約是在1996年到2001年間)中得到了迅速的普及。那時正值網際網路發展處于第一波熱潮,其中主要由netscape和microsoft這兩大浏覽器廠商在争奪市場佔有率。在此過程中,他們不斷地把各種浮華的特性添加到各自的浏覽器與javascript、dom及bom中,進而導緻了許多不一緻性。與此同時,由于浏覽器廠商都在忙于繼續增加新的浏覽器特性,以至于根本沒能及時更新相應的工具,這造成了開發工具的嚴重滞後。這種情況給使用javascript的開發人員帶來巨大的痛苦。我們将某個浏覽器裡編寫與測試過的腳本在另一個浏覽器裡測試,卻發現腳本不能正常工作,而且還沒有合适的錯誤資訊,隻得到如“操作終止”之類天書般的錯誤先知。

實作上的不一緻,文檔的缺乏,甚至連能将javascript關鍵字高亮顯示的編輯器都沒有。這一切都令開發者們再也沒法忍受了。

在另一方面,開發者自己也在他們的web頁面中使用了太多的新特性,總迫不及待地想引入浏覽器提供的每一項新功能,以“加強”自己的頁面。例如狀态欄中的動畫、閃爍的顔色、閃爍的文本、會搖晃的浏覽器視窗、螢幕上的雪花效果、能跟蹤對象的滑鼠光标等,這不但犧牲了實用性,而且也傷害了使用者體驗。這些濫用現象如今大多都消失了,但這在當時極大地損壞了javascript在業界的名聲。許多“專業的”程式員将javascript貶低為設計師的玩具,并批評它不适合用來開發專業應用。javascript語言在一些web項目中遭到了強烈抵制。某些項目甚至完全拒絕對浏覽器端進行任何的程式設計,轉而隻信任他們自己可以掌控的伺服器端。确實,在當時那種情況下,也沒有什麼理由值得我們花費雙倍的時間來為這些不同的浏覽器設計項目,然後再花更多的時間去調試它們。

這種情況一直持續到第一次浏覽器大戰結束。但在随後的幾年中,web開發領域在一系列曆史程序的推動下,終于發生了一些非常積極的變化。

microsoft公司依靠新釋出的ie6赢得了戰争。在那時,ie6雖然的确是最棒的浏覽器,但其後數年,他們卻停止了對ie的開發,這給了其他浏覽器充分的時間,使它們能夠在功能上逐漸完成對ie的追趕和超越。

web标準化運動漸漸被開發人員和浏覽器廠商所接受。這是很自然的,畢竟對于開發人員來說,誰也不想因為不同的浏覽器而花費雙倍(甚至更多)的開發時間,這促使各方都越來越傾向于遵守統一的開發标準。

開發人員和技術本身也日趨成熟了,越來越多的人開始将注意力轉移到其他方面,例如可用性、漸進增強技術及可通路性。開發輔助工具(例如firebug)也讓開發變得更高效,減輕了開發者的負擔。

在這種健康環境的影響下,開發人員開始謀求一種更好的新型開發模式,以取代這些現有的開發方式。随着gmail和google maps這一類富用戶端應用的相繼出現,很顯然,如今的javascript已經成為一種成熟的、某些方面獨一無二的、擁有強大原型體系的面向對象語言。關于這點,最好的例子莫過于是對xmlhttprequest對象的重新發現和推廣,該對象起初不過是一個ie-only特性,但如今已經得到絕大多數浏覽器的支援。通過xmlhttprequest對象,javascript就能以http請求的形式從伺服器上擷取所需的新鮮内容,進而實作了頁面的局部更新。這樣一來,我們就不必每次都重新整理整個頁面。随着xmlhttprequest對象的廣泛應用,一種類桌面式的web應用模式誕生了,我們稱之為ajax應用。

繼續閱讀