美國留學(xué)選擇什么專業(yè)好?留學(xué)美國熱門專業(yè)推薦
2019-06-26
更新時間:2024-08-13 04:43作者:小樂
簡介: 作為世界上使用最廣泛的JavaScript 庫,jQuery 幫助一代開發(fā)人員創(chuàng)建適合每種瀏覽器的網(wǎng)站??梢哉f,Web 開發(fā)之所以有今天的成就,離不開jQuery。但隨著新的庫、框架和范式的不斷涌現(xiàn),jQuery作為Web開發(fā).轉(zhuǎn)發(fā)+關(guān)注,私信小編“資訊”免費(fèi)與大家分享資訊!
作為世界上使用最廣泛的JavaScript 庫,jQuery 幫助一代開發(fā)人員創(chuàng)建適合每種瀏覽器的網(wǎng)站。可以說,Web 開發(fā)之所以有今天的成就,離不開jQuery。然而,隨著新的庫、框架和范式的不斷出現(xiàn),jQuery 作為Web 開發(fā)首選工具的地位逐漸變得岌岌可危……任何事物的發(fā)展都有其興衰,短期內(nèi)jQuery 不會出現(xiàn)。消失了,但如何維穩(wěn)、逆襲?
作者|郭丹尼譯者|新月,編輯|劉靜以下為翻譯: jQuery 是世界上使用最廣泛的JavaScript 庫。在2000 年代末,jQuery 受到Web 開發(fā)社區(qū)的歡迎,該社區(qū)使用它創(chuàng)建了一個由眾多網(wǎng)站、插件和框架組成的生態(tài)系統(tǒng)。但在過去的幾年里,jQuery 作為Web 開發(fā)首選工具的地位已經(jīng)被削弱。在這篇文章中,我們來看看為什么jQuery 變得流行,后來是什么導(dǎo)致它失寵,以及什么時候我們?nèi)匀粦?yīng)該選擇jQuery 來創(chuàng)建現(xiàn)代網(wǎng)站。
jQuery 發(fā)展簡史2005 年,John Resig 開發(fā)了jQuery 的第一個版本,并于2006 年在一次名為BarCampNYC 的活動上發(fā)布了它。他曾在最早的jQuery 網(wǎng)站上寫道:jQuery 是一個Javascript 庫,始終牢記自己的使命:編寫Javascript 代碼是一件有趣的事情。為了實(shí)現(xiàn)這一目標(biāo),jQuery 去除了所有不必要的標(biāo)記,以簡化、智能且易于理解的方式執(zhí)行常見的重復(fù)任務(wù)。 jQuery 有兩個主要的價(jià)值主張:首先,它提供了高效的API 來方便網(wǎng)頁的操作。特別是,它提供了強(qiáng)大的選擇元素的方法。除了通過id 或class 選擇元素之外,jQuery 還允許使用復(fù)雜的表達(dá)式,例如根據(jù)元素與其他元素的關(guān)系來選擇元素:
//選擇聯(lián)系人元素中人員列表中的每個項(xiàng)目$('#contacts ul.people li');這個選擇引擎最終被抽象到一個名為Sizzle 的單獨(dú)庫中。第二個賣點(diǎn)是瀏覽器之間差異的抽象。當(dāng)時,很難編寫能夠在所有瀏覽器上穩(wěn)定運(yùn)行的代碼。由于缺乏標(biāo)準(zhǔn)化,開發(fā)人員必須考慮許多不同的瀏覽器行為和邊緣情況。只需查看早期的jQuery 源代碼并搜索jQuery.browser 即可查看此類示例,如下所示:
//如果使用Mozillaif ( jQuery.browser=='mozilla' || jQuery.browser=='opera' ) {//使用方便的事件回調(diào)jQuery.event.add( document, 'DOMContentLoaded', jQuery.ready ); //如果使用IE,請使用Matthias Miller 的出色hack //http://www.outofhanwell.com/blog/index.php title=the_window_onload_problem_revisited} else if ( jQuery.browser=='msie' ) {//僅當(dāng)您使用時才有效document.write itdocument.write(''src=javascript:void(0)');//使用defer 腳本hackvar script=document.getElementById('__ie_init');script.onreadystatechange=function {if ( this.readyState==' Complete' )jQuery.ready;};//從內(nèi)存中清除script=;//如果使用Safari } else if ( jQuery.browser=='safari' ) {//不斷檢查是否出現(xiàn)document.readyStjQuery,開發(fā)者然后可以依靠jQuery 團(tuán)隊(duì)來處理這些陷阱。后來,在jQuery 的幫助下,開發(fā)人員可以更輕松地采用更復(fù)雜的技術(shù),例如動畫和Ajax。漸漸地,jQuery 已經(jīng)成為各個網(wǎng)站的標(biāo)準(zhǔn)依賴。直到今天,互聯(lián)網(wǎng)的很大一部分仍然是基于jQuery 構(gòu)建的。據(jù)W3Techs 估計(jì),大約74% 的網(wǎng)站仍在使用jQuery。 jQuery的管理工作也越來越正規(guī)。 2011年,jQuery團(tuán)隊(duì)正式創(chuàng)建了jQuery理事會。 2012年,jQuery委員會成立了jQuery基金會。 2015 年,jQuery 基金會與Dojo 基金會合并,成立了JS 基金會。后來,它于2019 年與Node.js 基金會合并,成立了OpenJS 基金會。 ——jQuery 是其“最有影響力的項(xiàng)目”之一。
事情已經(jīng)改變了。然而,近年來jQuery 的受歡迎程度有所下降。 GitHub 的網(wǎng)站前端不再使用jQuery,Bootstrap v5 也放棄了jQuery,因?yàn)樗荁ootstrap 的“客戶端對常規(guī)JavaScript 的最大依賴”(目前縮小為30KB)。 Web 開發(fā)的幾個趨勢削弱了jQuery 作為首選工具的地位。
瀏覽器由于多種原因,瀏覽器的差異和限制也不那么重要。首先是標(biāo)準(zhǔn)化程度的提高。主要瀏覽器廠商(Apple、Google、Microsoft 和Mozilla)成立了Web 超文本應(yīng)用技術(shù)工作組并合作開發(fā)Web 標(biāo)準(zhǔn)。盡管瀏覽器在重要方面仍然存在差異,但供應(yīng)商可以通過多種方式共同發(fā)展并避免無休止的戰(zhàn)爭。因此,瀏覽器API 變得越來越強(qiáng)大。例如,F(xiàn)etch API 可以替代jQuery 的Ajax 函數(shù):
//jQuery$.getJSON('https://api.com/songs.json').done(function (songs) {console.log(songs);})//nativefetch('https://api.com/songs.json').then (function (response) {return response.json;}).then(function (songs) {console.log(songs);}); querySelector 和querySelectorAll 方法也可以替代jQuery 的選擇功能:
//jQueryconst fooDivs=$('.foo p'); //nativeconst fooDivs=document.querySelectorAll('.foo p');現(xiàn)在我們還可以使用classList來操作元素的類:
//jQuery$('#warning').toggleClass('visible');//nativedocument.querySelector('#warning').classList.toggle('visible');這個網(wǎng)站(http://youmightnotneedjquery.com/)列出了有jQuery 代碼可以用本機(jī)代碼替換的幾種情況。一些開發(fā)人員仍然更喜歡使用jQuery,因?yàn)樗麄儾恢烙心男〢PI 可用,但隨著開發(fā)人員對API 越來越熟悉,他們對jQuery 的依賴將會減少。使用本機(jī)功能還可以提高網(wǎng)頁的性能?,F(xiàn)在您可以使用CSS 更高效地實(shí)現(xiàn)許多jQuery 動畫效果。第二個原因是瀏覽器的更新速度比過去更快。如今,除了Apple 的Safari 之外,大多數(shù)瀏覽器都有“常青”更新政策。這些瀏覽器可以在無需用戶干預(yù)的情況下進(jìn)行靜默更新,并且不依賴于操作系統(tǒng)更新。這意味著用戶可以更快地獲得瀏覽器的新功能和錯誤修復(fù),并且開發(fā)人員不必等待Can I Use 網(wǎng)站上給出的使用百分比達(dá)到可接受的水平。他們可以放心使用新功能和API,無需加載jQuery 或polyfill。第三個原因是Internet Explorer的邊緣化。 Web 開發(fā)人員一直討厭IE。一些IE 錯誤是眾所周知的,而且由于IE 在2000 年是主流瀏覽器,它缺乏“常青”更新,許多人仍在使用舊版本。微軟的做法加速了人們對IE的拋棄。他們在2016 年之后放棄了對IE 10 及以下版本的支持,并將IE 11 作為最后支持的版本。 Web 開發(fā)人員忽視IE 兼容性的情況越來越普遍。 2013 年,甚至jQuery 在發(fā)布2.0 版本時也放棄了對IE 8 及以下版本的支持。雖然一些特殊情況如遺留網(wǎng)站仍然需要IE,但使用IE的人越來越少。
新框架自從jQuery 發(fā)布以來,Web 開發(fā)中出現(xiàn)了大量的Web 框架。目前主流的是React、Angular和Vue。與jQuery 相比,這些框架有兩個顯著的優(yōu)勢。首先,它們可以輕松地將UI 分解為組件。這些框架旨在處理頁面的呈現(xiàn)以及頁面的更新。而jQuery通常只用于更新頁面,初始頁面需要由服務(wù)器提供。另一方面,React、Angular 和Vue 組件支持HTML、代碼甚至CSS 之間的緊密耦合。就像我們將代碼庫分解為獨(dú)立的函數(shù)和類一樣,這些框架可以將UI 分解為可重用的組件,從而更輕松地構(gòu)建和維護(hù)復(fù)雜的網(wǎng)站。第二個優(yōu)點(diǎn)是這些新興框架鼓勵聲明式范例,開發(fā)人員只需要描述UI 應(yīng)該是什么樣子,而如何實(shí)現(xiàn)它則留給框架。這種方法與jQuery 代碼中的命令式方法形成對比。使用jQuery時,需要顯式地編寫修改步驟。但在使用聲明式框架時,您只需要指定:“使用此數(shù)據(jù)來實(shí)現(xiàn)這樣的用戶界面”。這樣,即使你記不住復(fù)雜的代碼,也可以編寫出無錯誤的代碼。開發(fā)人員正在接受這些構(gòu)建網(wǎng)站的新方法,因此對jQuery 的關(guān)注度有所下降。
何時使用jQuery?那么,我們什么時候應(yīng)該選擇使用jQuery呢?如果你估計(jì)項(xiàng)目的復(fù)雜度會很高,那么最好使用其他庫或框架,因?yàn)檫@對于處理這種復(fù)雜度會更有幫助,比如將UI分解為組件。對于這樣的網(wǎng)站,一開始使用jQuery 還不錯,但很快就會變得混亂,您甚至不確定哪些代碼影響頁面的哪些部分。我以前遇到過這個問題。每當(dāng)你想修改代碼的時候,你都會感到隱隱約約的不安。由于jQuery 選擇器依賴于服務(wù)器生成的HTML 結(jié)構(gòu),因此很難確定修改代碼不會破壞其他功能。另一方面,有時您的網(wǎng)站只需要少量的交互式或動態(tài)內(nèi)容。然而,即使在這些情況下,我仍然不建議使用jQuery,因?yàn)楝F(xiàn)在我們可以使用本機(jī)API 實(shí)現(xiàn)很多功能。即使我確實(shí)需要更多功能,我也會尋找特定的庫,例如帶有axios 的Ajax 或帶有Animate.css 的動畫。在這些情況下,使用這樣的庫通常比加載整個jQuery(僅用于某些功能)更輕量。我認(rèn)為我們使用jQuery的原因是它提供了全面的功能,可以為網(wǎng)站前端提供全面的支持。你不必學(xué)習(xí)各種原生API或?qū)iT的庫,只需閱讀jQuery文檔,就可以立即提高你的工作效率。 jQuery 的命令式方法可擴(kuò)展性較差,但比其他庫的聲明式方法更簡單。對于范圍非常有限的網(wǎng)站,jQuery 開發(fā)很有意義,因?yàn)樗恍枰魏螐?fù)雜的構(gòu)建或編譯過程。此外,如果您確定站點(diǎn)的復(fù)雜性不會增加并且您不想使用本機(jī)功能,那么jQuery 是一個不錯的選擇,因?yàn)楸緳C(jī)功能肯定會比等效的jQuery 代碼更冗長。還有另一種情況:你必須支持舊版本的IE。在這種情況下,jQuery 可以很好地處理占主導(dǎo)地位的IE 瀏覽器。
展望未來,jQuery短期內(nèi)不會消失。 jQuery 仍在積極開發(fā)中,盡管我們有許多本機(jī)方法并且許多開發(fā)人員更喜歡使用本機(jī)API。 jQuery 幫助一代開發(fā)人員創(chuàng)建了適用于所有瀏覽器的網(wǎng)站。盡管jQuery 的許多方面已被新的庫、框架和范例所取代,但jQuery 在Web 開發(fā)成為今天的樣子方面發(fā)揮著不可或缺的作用。除非jQuery 的功能發(fā)生重大變化,否則jQuery 的使用量可能會在未來幾年繼續(xù)緩慢而穩(wěn)定地下降。新的網(wǎng)站將傾向于使用更現(xiàn)代的框架來構(gòu)建,并且jQuery 適合的情況會越來越少。對于某些人來說,網(wǎng)絡(luò)開發(fā)工具的流失率有點(diǎn)令人悲傷,但對我來說,這是快速進(jìn)步的標(biāo)志。 jQuery 為Web 開發(fā)帶來了更好的方法。而其之后的后起之秀也都在朝這個方向努力。
需要看java web、大數(shù)據(jù)、資訊:
老規(guī)矩:轉(zhuǎn)發(fā)+關(guān)注,私信小編“資訊”免費(fèi)與您分享資訊!