現(xiàn)代 javscript 編程 資料
Ajax,或曰異步Javascript與XML,是由Adaptive Path公司的創(chuàng)辦人之一兼董事長(zhǎng)Jesse James Garrett在其論文"Ajax:Web應(yīng)用程序的新途徑"(http://www.adaptivepath.com/publ ... archives/000385.php)中創(chuàng)造的一個(gè)術(shù)語(yǔ)。它描述了請(qǐng)求和提交額外的信息時(shí)發(fā)生于客戶(hù)和服務(wù)器之間的高級(jí)交互。
術(shù)語(yǔ)Ajax包括了許多種數(shù)據(jù)據(jù)通訊的可能組合,但它們都圍繞一個(gè)中心前提:附加的數(shù)據(jù)請(qǐng)求是在頁(yè)面完全載入之后由客戶(hù)端向服務(wù)器發(fā)起的。這允許應(yīng)用程序開(kāi)發(fā)者超越緩慢的、傳統(tǒng)的應(yīng)用程序流程,創(chuàng)建與用戶(hù)相關(guān)的額外交互。圖1-3是來(lái)自Garrett的Ajax論文的一個(gè)圖示,說(shuō)明了應(yīng)用程序中由于額外的請(qǐng)求發(fā)生在后臺(tái)(而且用戶(hù)很可能并不知情),交互的流程發(fā)生了怎樣的改變。
圖1-3:來(lái)自文章"Ajax:Web應(yīng)用程序的新途徑"的圖示,展示發(fā)生于客戶(hù)和服務(wù)器之間的先進(jìn)的異步的交互
Garrett論文的最初發(fā)表,激起了用戶(hù)、開(kāi)發(fā)者、設(shè)計(jì)者以及管理者們的興趣,使用高級(jí)交互的新型應(yīng)用程序爆炸式地增長(zhǎng)。諷刺的是,在這一興趣復(fù)蘇的同時(shí),Ajax背后的技術(shù)卻是相當(dāng)陳舊的(在2000年左右就有已有了商業(yè)上的應(yīng)用)。然而最主要的不同在于,老的應(yīng)用程序利用了瀏覽器特有的方式與服務(wù)器通訊(如僅ie具有的功能)。由于所有的現(xiàn)代瀏覽器都支持XMLHttpRequest(發(fā)送或從服務(wù)器接收數(shù)據(jù)的主要手段),the playing field has been leveled(見(jiàn)#12 cfs178的回復(fù)),每個(gè)人都可以享受其益處。
如果說(shuō)有一個(gè)公司走在了利用Ajax技術(shù)創(chuàng)建優(yōu)秀應(yīng)用程序的最前列,那無(wú)疑是Google。恰在最初的Ajax論文出現(xiàn)之前,它發(fā)布了一個(gè)高交互性的domo:Google Suggest。該demo可以實(shí)時(shí)地自動(dòng)完成你所鍵入的查詢(xún),這是舊式的頁(yè)面重載不可能達(dá)到的功能。圖1-4是Google Suggest運(yùn)行時(shí)的一個(gè)截屏。
圖1-4. Google Suggest,早于Garrett的Ajax論文的利用了異步XML技術(shù)的應(yīng)用程序
除此而外,Google的另一個(gè)革命性的應(yīng)用程序?yàn)镚oogle Map,用戶(hù)在其地圖上移動(dòng)將會(huì)實(shí)時(shí)地看到相關(guān)的局部結(jié)果。這一程序通過(guò)使用Ajax技術(shù)而提供的速度和可用性的水平是其它任何可用的地圖程序所無(wú)法比擬的,結(jié)果徹底地變革了在線地圖市場(chǎng)。圖1-5是Google Map的截屏.
圖1-5. Google Maps,利用了一些Ajax技術(shù)來(lái)動(dòng)態(tài)載入特定區(qū)域信息
JavaScript開(kāi)發(fā)所面臨的不幸事實(shí)是,因?yàn)榕c實(shí)現(xiàn)和支持它的瀏覽器關(guān)聯(lián)過(guò)于緊密,它受到當(dāng)前最流行瀏覽器的支配。由于用戶(hù)未必會(huì)使用對(duì)JavaScript支持得最好的瀏覽器,我們被迫對(duì)哪些是最重要的功能作出抉擇。
許多開(kāi)發(fā)者已經(jīng)開(kāi)始做的是去掉對(duì)那些導(dǎo)致過(guò)多開(kāi)發(fā)障礙的瀏覽器的支持。因?yàn)樗鼈冇脩?hù)群的規(guī)模和還是因?yàn)樗鼈儞碛心阆矚g的功能而考慮對(duì)瀏覽器的支持,需要仔細(xì)的權(quán)衡。
最近Yahoo發(fā)布了一個(gè)可用來(lái)擴(kuò)展你的web應(yīng)用程序的JavaScript庫(kù)。連同那個(gè)庫(kù),它還發(fā)布了一些供web開(kāi)發(fā)者遵從的指導(dǎo)方針。以我之見(jiàn),從中產(chǎn)生的最重要的文檔是Yahoo支持與不支持的各種瀏覽器的官方的列表。盡管任何人或任何公司都可以做類(lèi)似的事情,一份由互聯(lián)上訪問(wèn)最頻繁的網(wǎng)站所提供的文檔,其價(jià)值絕對(duì)無(wú)法估量。
Yahoo開(kāi)發(fā)了一個(gè)分級(jí)的瀏覽器支持策略,對(duì)瀏覽器指定特定的級(jí)別并依據(jù)其功能為它提供不同的內(nèi)容。Yahoo給瀏覽器三個(gè)級(jí)別:A,X和C:
A級(jí)瀏覽器是得到完全支持和測(cè)試的,Yahoo的所有程序都能有保障在其中運(yùn)行。
X級(jí)瀏覽器是Yahoo認(rèn)可但是沒(méi)能徹底測(cè)試的準(zhǔn)A級(jí)瀏覽器,或者是嶄新的從未遇到過(guò)的瀏覽器。X級(jí)瀏覽器被期望能處理高級(jí)的內(nèi)容,與A級(jí)瀏覽器等同對(duì)待。
C級(jí)瀏覽器是已知的“劣質(zhì)的”瀏覽器,不支持運(yùn)行Yahoo應(yīng)用程序所必須的功能。由于Yahoo應(yīng)用程序完全Unobtrusive(即使沒(méi)有JavaScript它們也能繼續(xù)工作),這些瀏覽器只需處理不含JavaScript的功能性的內(nèi)容。
順便一提,Yahoo的瀏覽器級(jí)別選擇竟與我的不謀而合,這使得它尤其富有吸引力。在這本書(shū)里,我大量地使用了術(shù)語(yǔ)“現(xiàn)代瀏覽器”,當(dāng)我用這一措詞的時(shí)候,我指的Yahoo瀏覽器分級(jí)表評(píng)定為A級(jí)的任瀏覽器。給定一組賴(lài)以工作的一致的功能,減少因避免瀏覽器的不兼容而帶來(lái)的痛苦,學(xué)習(xí)和開(kāi)⒌木岜淶酶佑腥ぁ?lt;br> 我極力推薦你們?nèi)ネㄗx瀏覽器分級(jí)的支持文檔(見(jiàn)http://developer.yahoo.com/yui/articles/gbs/gbs.html,該文檔包含了圖1-6所示的瀏覽器支持表),感受一下Yahoo力圖實(shí)現(xiàn)的是什么。通過(guò)將些信息公之于web開(kāi)發(fā)的大眾,Yahoo正在給出一條無(wú)價(jià)的“黃金標(biāo)準(zhǔn)”讓其它所有人去靠攏,這是很了不起的。
更多的關(guān)于瀏覽器支持情況的信息請(qǐng)參看本書(shū)的附錄C,那里對(duì)每種瀏覽器的缺點(diǎn)和長(zhǎng)處都有深入的論討?;蚨嗷蛏俚?,你會(huì)發(fā)現(xiàn)所有的A級(jí)瀏覽器都走在發(fā)展的最前列,提供了遠(yuǎn)遠(yuǎn)超出你的開(kāi)發(fā)所需要的功能。
當(dāng)選擇你希望支持哪些瀏覽器時(shí),最終結(jié)果實(shí)際上可以歸結(jié)為你的應(yīng)用程序支持的一組功能。如果你想要支持NS4或IE5(舉個(gè)例子來(lái)說(shuō)),則勢(shì)必嚴(yán)格地限制你可以在程序中使用的功能的數(shù)量,因?yàn)樗鼈內(nèi)狈?duì)現(xiàn)代編程技術(shù)的支持。
盡管如此,了解哪些瀏覽器是現(xiàn)代的允許你利用其中可用的強(qiáng)大的功能并給你一個(gè)可供將來(lái)的開(kāi)發(fā)所依據(jù)的穩(wěn)固的基礎(chǔ)。這一穩(wěn)固的開(kāi)發(fā)基礎(chǔ)可由以下幾種功能所定義:
核心Javascript 1.5: 最近、最廣泛接受的JavaScript版本。它全面支持面向?qū)ο蟮腏avaScript。IE5.0不支持全部的1.5,這是開(kāi)發(fā)者們不愿意支持它的主要原因。
XML文檔對(duì)象模型(DOM)2:用來(lái)訪問(wèn)HTML和XML文檔的的標(biāo)準(zhǔn)方案。這絕對(duì)是編寫(xiě)高效率的程序不可或缺的。
XMLHttpRequest: Ajax技術(shù)的支柱——用來(lái)發(fā)起HTTP請(qǐng)求的一個(gè)簡(jiǎn)單層。所有的瀏覽器默認(rèn)都支持這一對(duì)象,除了IE5.0-6.0;而它們也都支持用ActiveX初始化功能相當(dāng)?shù)膶?duì)象。
CSS: 網(wǎng)頁(yè)設(shè)計(jì)的基本需求。這似乎像是一個(gè)額外的需求,但是擁有CSS對(duì)web應(yīng)用程序開(kāi)發(fā)者來(lái)說(shuō)是必不可少的。由于每一種現(xiàn)代瀏覽器都支持CSS,大多數(shù)問(wèn)題的發(fā)生通常歸結(jié)為呈現(xiàn)方面的差異。這正是IE for Mac較少被頻繁支持的主要原因。
以上這些瀏覽器功能的結(jié)合構(gòu)成了開(kāi)發(fā)JavaScript web應(yīng)用程序的支柱。所有的現(xiàn)代瀏覽器都以某種方式支持以上列舉的功能。本書(shū)論述的所有內(nèi)容都基于這一假設(shè):你所使用的瀏覽器最起碼能支持它們。
經(jīng)典論壇討論:
http://bbs.blueidea.com/thread-2733431-1-1.html
相關(guān)文章
使用requestAnimationFrame實(shí)現(xiàn)js動(dòng)畫(huà)性能好
requestAnimationFrame優(yōu)于setTimeout/setInterval的地方在于它是由瀏覽器專(zhuān)門(mén)為動(dòng)畫(huà)提供的API,在運(yùn)行時(shí)瀏覽器會(huì)自動(dòng)優(yōu)化方法的調(diào)用,并且如果頁(yè)面不是激活狀態(tài)下的話,動(dòng)畫(huà)會(huì)自動(dòng)暫停,有效節(jié)省了CPU開(kāi)銷(xiāo),這篇文章給大家詳細(xì)介紹使用requestAnimationFrame實(shí)現(xiàn)js動(dòng)畫(huà)2015-08-08微信小程序中插入激勵(lì)視頻廣告并獲取收益(實(shí)例代碼)
這篇文章主要介紹了微信小程序中插入激勵(lì)視頻廣告并獲取收益,通過(guò)代碼給大家介紹了如何插入及注意事項(xiàng),需要的朋友可以參考下2019-12-12javascript實(shí)現(xiàn)的textarea運(yùn)行框效果代碼 不用指定id批量指定
今天在寫(xiě)一個(gè)網(wǎng)頁(yè)的時(shí)候用到了N多嵌套在textarea標(biāo)簽里的代碼,定義雙擊運(yùn)行其內(nèi)的代碼段。但是每次創(chuàng)建一個(gè)這樣的可運(yùn)行的實(shí)例都要給textarea元素自定義一個(gè)id值和寫(xiě)入雙擊事件,好不麻煩。2009-12-12js中的document.querySelector()方法舉例詳解
這篇文章主要給大家介紹了關(guān)于js中document.querySelector()方法的相關(guān)資料,document.querySelector是JavaScript中的一個(gè)內(nèi)置方法,用于通過(guò)CSS選擇器選擇文檔中的第一個(gè)匹配元素,需要的朋友可以參考下2024-01-01Echarts.js實(shí)現(xiàn)水滴球和海洋效果
這篇文章介紹了Echarts.js實(shí)現(xiàn)水滴球和海洋效果的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法
今天小編就為大家分享一篇js jquery 獲取某一元素到瀏覽器頂端的距離實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-0925個(gè)讓你眼前一亮的JavaScript代碼技巧分享
學(xué)習(xí)強(qiáng)大的JavaScript一行代碼,能夠節(jié)省你的時(shí)間和代碼量,所以本文為大家整理了25個(gè)JavaScript實(shí)用代碼技巧,感興趣的小伙伴可以了解一下2023-07-07