jQuery并不是一個(gè)framework按脚,只是一個(gè)library泵督,它勝在將DOM樹查找铜异、事件綁定監(jiān)聽哥倔、瀏覽器兼容性完美結(jié)合在一起。
參考jQuery 解決了怎樣的問題揍庄?
jQuery 解決了 Web 發(fā)展中一個(gè)時(shí)代的問題咆蒿,此時(shí)已隱退二線。
剛開始 JS 就是一門腳本語言蚂子,提供的 API 并不完善沃测,可以說自身語言能力十分薄弱,因而 Prototype 這個(gè)庫風(fēng)靡一時(shí)食茎,它的出現(xiàn)就是為了完善 JS 語言上的不足蒂破。
隨著 Ajax 的興起,Web 需求越來越旺盛别渔,當(dāng)時(shí)也出現(xiàn)了 Gmail 這類龐大附迷、好用的 Web 應(yīng)用,Web 正式進(jìn)入 2.0 時(shí)代哎媚。而與此同時(shí)喇伯,瀏覽器各廠商之間也開始了市場爭奪戰(zhàn),不同瀏覽器奉行各自一套 Web 標(biāo)準(zhǔn)拨与,導(dǎo)致 JS API 很不一致稻据,開發(fā)者需要花費(fèi)大量時(shí)間兼顧多個(gè)瀏覽器。此時(shí)买喧,jQuery 順勢而生捻悯。
jQuery 良好地屏蔽了各瀏覽器之間的差異,同時(shí)也將鏈?zhǔn)秸{(diào)用這種 DSL 絲滑地融進(jìn)了前端的日常編碼中岗喉,隨著 jQuery 地位的不斷攀升秋度,它漸漸地成為前端開發(fā)者必不可少的開發(fā)利器,并出現(xiàn)了一大批 jQuery 的維護(hù)者和使用者钱床,成千上萬 jQuery 使用者向社區(qū)提交組件荚斯,形成了一個(gè)「DOM 操作世界」中繁華的社區(qū)。
然而,近些年事期,各瀏覽器廠商之間的合(tuǒ)作(xié)滥壕,產(chǎn)出了高度一致的 Web 開發(fā)標(biāo)準(zhǔn),在瀏覽器的升級(jí)迭代過程中兽泣,基本上磨平了 JS API 的差異绎橘,與此同時(shí),也提升了語言自身的能力和 JS 對(duì)宿主對(duì)象操縱的能力唠倦,jQuery 以及其他對(duì)語言和平臺(tái)做彌補(bǔ)的庫開始慢慢凋零称鳞。
參考jQuery會(huì)過時(shí)嗎?
說這個(gè)你得知道jQuery提供的核心價(jià)值是什么稠鼻。
我總結(jié)有幾點(diǎn):
- 發(fā)揚(yáng)光大了$和CSS選擇器的天才idea(盡管都不是發(fā)明者)
- 處理瀏覽器的兼容性問題和各種bug
- 鏈?zhǔn)秸{(diào)用為核心的DSL(此為jQuery獨(dú)創(chuàng))
- 基于jQuery的生態(tài)(大量插件冈止,各種工具如IDE也對(duì)其有良好支持)
看一下前兩點(diǎn), - 新的DOM標(biāo)準(zhǔn)(借鑒jQuery)加入了許多新的方法候齿,覆蓋了絕大部分use cases熙暴;
- 目前主流瀏覽器的兼容性已經(jīng)大幅提高,且因?yàn)槎际荅vergreen browsers了慌盯,所以以后也不太會(huì)出現(xiàn)嚴(yán)重的兼容性問題了周霉;此外新標(biāo)準(zhǔn)比以往要更詳盡清晰,出現(xiàn)不一致和bug的機(jī)率也小了亚皂;
實(shí)際上這前兩點(diǎn)也不是一蹴而就的俱箱,而是一直在改進(jìn)。比如原生querySelector API普及之后孕讳,才出現(xiàn)了Zepto匠楚。只不過這兩年發(fā)展加速,以至于Zepto還沒取代jQuery厂财,就要一起過時(shí)了芋簿。