標籤:

jQuery 解決了怎樣的問題?


解決了「DOM API 反人類」這一歷史難題。

它的後繼者 Angular 和 React 依然在這條道路上探索。

你以為 JS 變化很大嗎,從來沒變。

瀏覽器上的 JS 自始至終(主要)只在做兩件事情

DOM 操作

網路請求

MVVM 框架讓你直接不用操作 DOM。

React 生態的框架則用 Virtual DOM 使得 DOM 操作變得簡單。

jQuery 用一種原始而又簡單的方案解決了這個問題——優雅的API,但缺點是你依然要理解 DOM才能自如地運用jQuery。

而 A 和 R 這類框架則直接屏蔽掉 DOM 的細節。

對的,你發現了,前端就是這麼痛恨和 DOM 打交道。


jQuery 出現的時代很早.

  1. 解決了多瀏覽器兼容問題,幾乎是任何瀏覽器都能完美跑起來,這是很多框架都做不到的.
  2. 選擇器使用 Sizzle JavaScript Selector Library ,早期ie6時代就實現了css3 選擇器的庫
  3. 鏈式API, $().show().hide().toggle().on().off()...... AngularJS 借鑒於此
  4. 插件編寫方式很隨意,可以很簡單,也可以很複雜,容易上手
  5. 插件生態龐大,各式各樣的jQuery插件,滿足不同的需求
  6. 開拓了Web的一個時代

  7. 非常穩定,每一版的發布都經過詳細的測試,鮮少有坑,API也很少變動(設計成功的最好證明)
  8. 相比同類庫, YUI , Mootools , Dojo ,Prototype 更容易上手。到後期這些框架基本都死了, 或者是出現了各式各樣的維護問題

從代碼層面上來講, John Resign 的jQuery里有很多hack的手段,來處理低版本瀏覽器的兼容。

通讀jQuery代碼能一定程度上提升前端的水平, 很多hack手段相當神奇,

  1. 比如ie6的事件解綁,如何緩存事件,在dom上或者某個位置

  2. 如何封裝一個事件對象來解決原生事件對象某些情況下不可寫的問題,

  3. on方法是如何實現的以及解綁時如何找到對應的function
  4. 如何緩存選擇器,比如遇到這樣儍逼的代碼: $(".c")... $(".c")... $(".c")... $(".c")...


瀉藥

細的不說了

一般流行起來的

無外乎是

降低開發門檻

提高開發效率


jQuery 解決了 Web 發展中一個時代的問題,此時已隱退二線。

剛開始 JS 就是一門腳本語言,提供的 API 並不完善,可以說自身語言能力十分薄弱,因而 Prototype 這個庫風靡一時,它的出現就是為了完善 JS 語言上的不足。

隨著 Ajax 的興起,Web 需求越來越旺盛,當時也出現了 Gmail 這類龐大、好用的 Web 應用,Web 正式進入 2.0 時代。而與此同時,瀏覽器各廠商之間也開始了市場爭奪戰,不同瀏覽器奉行各自一套 Web 標準,導致 JS API 很不一致,開發者需要花費大量時間兼顧多個瀏覽器。此時,jQuery 順勢而生。

jQuery 良好地屏蔽了各瀏覽器之間的差異,同時也將鏈式調用這種 DSL 絲滑地融進了前端的日常編碼中,隨著 jQuery 地位的不斷攀升,它漸漸地成為前端開發者必不可少的開發利器,並出現了一大批 jQuery 的維護者和使用者,成千上萬 jQuery 使用者向社區提交組件,形成了一個「DOM 操作世界」中繁華的社區。

然而,近些年,各瀏覽器廠商之間的合(tuǒ)作(xié),產出了高度一致的 Web 開發標準,在瀏覽器的升級迭代過程中,基本上磨平了 JS API 的差異,與此同時,也提升了語言自身的能力和 JS 對宿主對象操縱的能力,jQuery 以及其他對語言和平台做彌補的庫開始慢慢凋零。


解決了 dom API 不好用,一定意義上解決了瀏覽器兼容性寫法問題

現在基本上可以宣告 jQuery 死刑了,新系統還是用現代三大框架吧


這問題還要問,當然是多瀏覽器兼容性問題啊。

另外,說句題外話,不要用多了各類MVVM,MVC就瞧不上jQuery,jQuery還是很優秀的。


write less ,do more


在它火熱的那個時代,解決了

  • 從選擇器出發方便易用,提前實現了一些CSS選擇器
  • 處理了很多瀏覽器兼容性問題
  • 把鏈式調用變得流行了起來
  • 簡潔優雅的API,以及深入人心的set all, get first
  • 一個套實用性和性能都很不錯的動畫庫
  • 簡單但開放的插件體系


首先,

jQuery 是一個 JavaScript 庫。

jQuery 極大地簡化了 JavaScript 編程。

jQuery 很容易學習。

這不是我說的,是W3School說的,參見jQuery 教程。

往往編程工具使用人數與學習容易,操作簡單相關。

jQuery就是一個學起來簡單,優化了很多JS的操作。

1.方便快捷操作DOM

2.解決瀏覽器兼容問題

3.統一了Ajax代碼規範

4.優化js

5.插件豐富


瀏覽器兼容,插件滿天飛~


兼容以及效率


瀏覽器兼容(主要是ie),ie5時代其實只有javascript和適合ie的jscript,沒有其它瀏覽器的事情,現在才叫兼容。

命名好,與css選擇器無縫兼容匹配,開發體驗好。

現在一些es567的原生js命名和設計還是非常蛋疼的,估計標準也就借鑒了jquery20%不到,多借鑒些有什麼問題, 新的一些dom操作還是挺糾結的,另好的命名也都被jquery用完了吧,英文就那麼幾個好用的詞。 標準本來就是方便開發者完成業務的。

可以考慮用c++重新實現一遍列入標準草案作為選擇,呵呵


解決了兼容性問題


兼容問題


解決了動態事件綁定,從1.3以後徹底甩開prototype.js


寫更少的代碼


節約時間

write less,do more


推薦閱讀:

如何學習jQuery?
jQuery 為什麼要劃分.bind()和.live()?
?基於asp.net,jquery,bootstrap的web應用開發是明智的選擇嗎?
為什麼一些大公司願意無償提供CDN服務?

TAG:jQuery |