都說學習原生 JS 很重要,在實際網站前台應用開發中哪些是 jQuery 這些庫無法解決的?

其實我問這個問題的目的是在考慮自己職業發展,目前我的水平css沒有問題,js能用jQuery做大多數的效果,寫代碼時會注意語義化,seo等問題,現在學習原生js遇到了瓶頸,考慮是不是繼續走這條路


除非主要用戶群體集中在 IE 6~7,否則性能問題不是很關鍵(遵照業內通用的優化方案)。

在這個基礎上選擇原生 JS 還是 jQuery 要看你的需求:

如果你的應用需要大量非 CSS3 動畫效果、Ajax 交互的話、大量動態內容的話,jQuery 是不錯的選擇,比較容易寫出易維護的代碼,並且學習難度不高,利於團隊間的協作。

如果你的應用有團隊開發的應用庫,只要一個選擇器庫的話,有很多可以取代,比如 put selector,甚至是 jQuery 在用的 Sizzle 都可以。

jQuery 適合快速開發,特別是團隊水準不一的時候,簡化了很多東西的 jQuery 是一個平衡點。

反之對性能有要求的,就沒必要選擇 jQuery。這裡的性能不局限於代碼性能,比如最新的 jQuery 光 minified 的情況下也超過了 90kb,對於小型或靜態內容居多的項目無疑有點過重了,對移動平台也是個很昂貴的代碼。


把jquery想成是個網頁工具集合,包含了DOM操作器+ajax工具+動畫工具+非同步工具+相關工具的組合體。所以除此之外,是很多功能是不包含的。

列出幾個:

1.模塊載入器, 一般是用requirejs或者seajs來做

2.字元處理,string的處理不是jquery的功能,一般有String或者underscore.string來處理

3.隨機數

4.圖形處理(2d,3d,svg,webGL),這個完全就和jquery無關了,three.js,d3.js, processing.js等等

5.數學操作

6.高級數組,對象,函數處理,這個是有underscore處理的。

7.模板,handlerbar.js是比較有名的。

8.長久數據保存,管理localStorage和sessionStorage的操作。

9.視頻和音頻播放,video.js可以看看

10. 語法編譯器,這個有Esprima.js,

11.單元測試,Qunit mocha等框架

12.基準測試benchmark

13. MVC,MVP,MVVM,MV*框架,這個和jquey完全無關了

等等等等等等等等等等等等,這些都不是jquery能做到的。


jquery是一個js的框架,它能極大程度地減小開發的難度,但也正是由於這點,讓很多初學者誤以為學會jquery就可以搞定js開發了。實際上,js語言本身的魅力就這樣被埋沒了。如果真的要理解j好jquery,就一定是從理解js本身出發,只有這樣,才能看到jquery之外更多的精彩,也不會為jquey不能做什麼而發愁。


我就說一句話:不掌握好JS,jQuery和整個前端開發(不含純重構工作)的水平也就只能停留在入門級的水平,等你遇到問題的時候你自己都意識不到正在遭遇瓶頸。


jq只是一個庫,封裝和擴展了原生方法,二者不衝突。但如果對原生的JS沒有深刻的理解和實踐,那麼如樓上幾位所說,你就一直停留在入門,各種拼裝粘貼,遇到新鮮的或出了bug只能拜求百度谷歌,就別談性能、優雅、設計模式……


解決問題分幾個層面,如果從功能的角度來說,可能jQuery可以而且甚至很好的完成原生js所有的功能,但是如果從性能的角度上來說,畢竟是中間多了一層,雖然在不斷的優化,但是在某些方面還會有些許欠缺的地方。

關鍵還是看您的具體需求,在二者之間找到一個很好的平衡點,沒有非此即彼的東西,取其精華去其糟粕,才是最完美的。


jQuery解決的問題是基礎DOM處理和兼容性問題,而且他是個語言內DSL,這意味著jQuery依然在JavaScript的範疇之內。

我其實比較反對「原生JS基礎必須打好」這種論調的:

說原生,就是與jQuery之類的類庫相對比,感覺大家多針對的是selector, dom處理, 瀏覽器相關處理等的問題。這些 根 本 不 是 Javascript的優勢和語言特性所在好么?

而且,上面那些問題遇到兼容性問題什麼的時候,給新人帶來無數的麻煩的同時,解決問題的過程就是不斷地重複造輪子,我實在覺得沒有意義。

從這點出發來再去看Javascript基礎的重要性,會明確得多:

1. 通用的編程思維要懂。封裝、解耦、設計模式、編碼規範這些東西,其實都不是JS才有的東西,他只是對這些編程思維的一種實現方式。

2. 編程思維熟悉的同時,JS的語言特性也能同步得到理解。因為語言與編程思路會相互影響。拿著JAVA或C++的方式來做JS是不可取的。

3. 有了對JS語言特性的更深刻的把握之後,使用起jQuery或別的類庫就會更加得心應手,也會更懂得如果在他們之上構建出自己想要的功能或可重用的封裝。

4. 然後才能真正地合理利用各類語言手段和類庫工具,以極高的效率完成工作。

兩手抓,兩手都要硬,這才是硬道理。

就麻煩別再老是拿jQuery和原生JS說事了:他們壓根就不衝突!


一般情況下,選擇使用原生JS開發,會基於以下幾種情況:

1.對性能有較高的要求

2.對載入的速度有較高的要求

3.多人合作(假設這幾個人所使用的類庫不同,例如一人用jquery 一人用mootoole)

4.需要實現一些框架無法實現的功能

5.打算自己寫一套框架

其實在平時寫代碼的過程中,會經常原生的js和框架混用,所以掌握好原生js還是相當重要的,這樣才能最大限度的保證你代碼的靈活性


如果是移動平台的話用JQ很奢侈啊。


一般的js庫都能滿足實際開發需求。但是對於性能問題,和代碼量要求特別高的原生js是不錯的選擇。


先入門,再問這個問題


個人覺得最重要的是讓你明白真正的語言本身的內容,畢竟JS框架都是建立在原生的基礎上的。


類庫設計考慮的是應對大多數場景,效率上只能是大多數情況上最優,具體的業務上可能效率低下,舉個例子,快排在多數情況下是很快的,但是在極端情況下跟冒泡那些是同樣的效率。類庫要考慮功能齊全,但是實際做的時候未必都會用到。


具體業務;這個東西往往和什麼類庫的無關。


jquery就是用原生寫的啊,jquery乾的原生能,原生能jquery基本也都能


如果你不是做前端的,推薦你用jQuery,提高開發效率,不建議用原生js。如果你是做前端的,jQuery就像漢堡包,吃多了遲早會讓你忘掉傳統中餐是怎樣的味道。—— 一個用久了jquery的人的感言


大部分時候,jquery及其插件能解決遇到的問題。但難免會有個性化的需求需要自己實現,這時候你就需要js功底了。


jquery僅僅只是js的一個庫,它把js的很多操作簡化了,比如dom操作、ajax等等,所以用起來相對簡單。jquery用起來是比較容易,但如果僅僅只是學會使用,而不去了解這類庫本身的設計,那其實也沒啥意思。對於和原生js的區別,這裡舉個我在知乎上面看到的比喻:jquery就像騎自行車,而原生js就是走路,雖然騎自行車的確會比較舒服,但面對崎嶇的山路,遠遠沒有走路來得輕鬆


感覺要是干前端的話就要把js當成一門語言來對待,給予語言該有的尊重,jQuery感覺更像個工具。


因為原生JS和Jquery而使你迷失方向? Jquery只是js的一個庫,和原生JS沒有衝突,jquery懂多了不會影響js,懂多了js反而更懂jquery。不過前端這個職業沒有明顯的界限,的確需要給前端正名,應該有一個標準的職責劃分,這有利於這個職業的發展。

需求分析交互設計(產品經理),效果設計(美工?),頁面製作(切圖仔?),後台交互(前端?)


還好我當初是先學的jvaascript後來才學的加Query,學完之後感覺被坑了,JavaScript做的效果,在jQuery中幾句代碼就搞定了,但是真是有點兒欣喜若狂。。。


沒有JQuery做不到的事情, 只有你想不到的事情


推薦閱讀:

h5 css js學習時間加起來大概需要多少時間,推薦幾個網上學習課程?
自己寫HTML用Cordova打包與用AppCan、Dcloud、WeX5、ApiCloud有何區別?
你為什麼選擇做前端?
如何在 form 表單提交後實現頁面不跳轉?
2015年web前端開發行業的牛人有哪些?

TAG:前端開發 | JavaScript | jQuery | 測試工程師 |