js入門後,就一直用jquery開發,這樣存在什麼弊端么?
大二,在大一下學期接觸web前端開發,自學html+css,然後入門js,學習jquery,然後用jquery寫了網頁聊天室,照片牆一些頁面,js基本都是用jquery框架,這樣會不會影響自己未來發展和學習。
添加補充:自己在大一暑假,花了一個月看javascript高級程序設計,說實話,這本書看到後面越看越不懂,也不知道有什麼用,怎麼用,這陣子也迷惘要不要現在去學PHP,node.js等技術。
jquery的優點:他是常用的js工具方法的一堆封裝,他在一定程度上加快前端開發的速度,會縮短項目開發周期,會減少很多代碼。
缺點:因為jquery內部做了很多細節的處理,當然最終目的是為了方便的調用。但是有些初學者誤以為,js的本來面貌就是這個樣子。用Jquery去描述業務場景,而不是試圖用代碼邏輯來解決問題。所以很多人就此對jquery造成依賴。很多提問的時候問,這個問題用jquery怎麼解決。為什麼他能夠像現在如此受歡迎,成為一種事實的標準,是因為他的封裝充分考慮了開發者的習慣,在儘可能大的角度來方便開發者調用與二次開發,這是他的一個優點之一。具體體現在,類工廠鏈式方式的調用,比如:$().show().animate(),比如set,get的統一參數處理。$().css("width") $().css({ width : 200 });
而且在早期版本兼容了低版本ie的很多bug,使開發的注意力真正的關注到邏輯與數據上來,而不是成天解決兼容問題。
其它優點不一一等等。至於如何使用好jquery,jquery提供的方便快捷封裝在整個前端開發流程佔多大的比例?為什麼我們一定要建議先學js,在學習其它框架,這是我們要搞清楚的。1. 其實如何使用好jquery,取決於原生js的基礎,什麼是原生js的基礎:比如:js語句後面到底用不用加分號,不用加分號時在哪個地方有坑?js裡邊單雙引號是否有區別,他的標識名命名規則是怎麼樣的,為什麼prototype與jquery都取$為他的工廠函數標誌?如果你將來寫一個,還有沒有其它符號可用?js裡邊保留字,關鍵字,有哪些?each與普通的for循環有多大的區別,他的好處在哪裡,他的壞處在哪裡,我們什麼時候該用他,什麼時候不該用他,等等。還有高級的,如何實現一個類的繼承,如果用jquery方便的繼承,什麼閉包,閉包的優缺點,什麼是事件代理,代理的優缺點。等等上面的這些知識,在任何一個jquery相關書籍裡邊提的不多,而這些恰恰是一個js初學者必須掌握的。2. jquery在整個開發過程中充當了一個方便操作dom的工具方法集合,而前端開發除了操作常用的dom之外,還需要操作頁面的交互數據,模塊化開發,工程師發布等等。誇張點說:jquery只是前端開發中的一個部分,他沒有任何一處能力完全取代原生js。而且我們需要了解的還有很多,具體見下文。
前面從個人的角度介紹了一下什麼是jquery,然後什麼是js,百度很多,不一一介紹。3. 只有在學好原生js的基礎上,才能很多的學習jquery或其它框架。因為jquery與其它框架出現的初衷就是加快js開發,粗暴的理解,他對常用的js開發函數進行了封裝,所以js功底紮實,基本看api及說明就能很快的入手,這也是jquery及其它框架歡迎的根本。然後個人建議:先學原生js,再學jquery,然後有空學習jquery源碼,才能更好的使用jquery。然後問題來了,除了jquery之外還有什麼值得學習的主流js框架?jquery 主要戰場還是在dom操作這塊,順帶封裝了ajax或其它的常用方法。其它經典懷舊的幾個有空的時候可以了解一下他們的源碼,mootools, prototype.是他們啟發了js向工程化,團隊化,協作化方向發展的轉變,yui雖然聽說停止開發了,但他的代碼思想與那些yahoo jser付出,努力的結晶是值得我們學習與默拜的。除了jquery之外,ext是一個巔峰,需要了解一下。他是初期企業級UI框架解決的一個鼻祖,從一定程度上解決了當時企業級應用的複雜界面交互,但是後來由於界面風格的單一化或本身一些性能問題,而被一些開發者棄用。其它類ext的比如:easyui, lightui, j-ui, 這幾個,並沒有真正意義上顛覆或超越ext,但在天朝本地化或語言或自身業務模式上有了一定的微創新或發展。由於隨著前端交互或數據的提高,對前端的依賴也是越來越大,這樣前端的代碼也是越來越多,這樣的場景下就需要一個能解決代碼塊與塊之間的調用,多塊的代碼載入,等等這些問題的框架出現。這時候requirejs,seajs填補了這2個空白。
然後核心的模塊解決了,塊與塊的問題解決了,就剩下打包發布了,最近業界有這三個東西做這方面的工作。grunt, gulp,fis。又隨著前端代碼的越來越複雜,不得不出現了javascript mv*的解決方案:angularjs, React 中文, vuejs, backbone, 有空的時候了解一下。其它的如:underscore,https://lodash.com/移動端的幾個需要了解一下,jq mobile, zepto.knockout,swipe,iscroll還有一些劍走偏峰的作品比如:three.js,d3.js, famo.us,還有一些國內jser的貢獻,團隊或個人的都有。比如qwrap, avalon,還有一個百度的七巧板,騰訊的jx,還有其它的如, lightbox, artDialog, https://github.com/aui/artTemplate。還有,如果你對以上前端技術真的感興趣,有興趣加入前端交流群:327388215,禁閑聊,無意義大圖片,非喜勿進。
用 jQuery 沒什麼問題,前提是你同時也在系統學習 JavaScript 本身,並且去看看 jQuery 以外的世界。我覺得你可以不知道 jQuery 在底層幹了多少臟事去做兼容,在沒有必要的時候不需要在這上面浪費太多時間。但是如果讓你用現代瀏覽器支持的 DOM 介面去實現 jQuery API 提供的一些功能你可不能一點思路都沒有呀。
沒事 我大二的時候jq貌似還沒出正式版。所以對你現在影響不會很大吧。畢竟我現在還好好的…
跟彈吉他一樣 先要會彈 然後發現彈唱什麼都能彈了 但是進步不了了 這個時候需要樂理知識來提高自己水平 然後開始猛學樂理 然後接觸指彈電吉他編曲 水平又會突飛猛進
我第一次決定放棄jQuery的時候是寫一個複雜應用,看到devtools的timeline大量出現30fps甚至以下的時候;才不得不學習了$(".className")不是簡單的document.querySelectorAll的wrapper,$.hide()會用大量的computedStyle操作,.innerHTML可以比html()快很多很多。jQuery的API很好用,但性能也許是一個弊端,開發效率上的全局最優解有時候不是技術實現上的局部最優解,尤其是當你需要60fps的時候。
我同意匿名用戶說的「你找工作面試的時候,會死的很慘」這個觀點,但是跟我反對應試教育一樣,我們學技術不是以「通過面試」為目的的。
對於 jQuery,我一直是這麼一個觀點:我建議上手就用 jQuery,為什麼?簡單易用、兼容性高。但我們不應該去依賴它,當你把 jQuery 用得比較熟悉的時候,你應該去看一下源碼,了解一下它是如何做兼容的。比如 .on() 這樣的事件綁定,它是如何做到兼容各個瀏覽器的,然後自己嘗試去把它實現出來。
對於別的框架或者庫都是如此,正確學習的方法應該是:明白它為了解決什麼問題-&>學會使用-&>理解它的思想-&>研究它的源碼。首先應當肯定題主,學生階段做到這個水平不錯了。
其次我要批評題主,只會用 jQuery,只能解決這些簡單的問題。我遇到過很多人,js的基礎知識稀爛,寫出來的東西堪堪可用,但bug頻出,對修改和維護很不友好。
最後給你一個建議,多讀多看多寫多思考。
js高級程序編程這本書其實不難,都是基礎,雖然DOM和BOM部分略為過時,ES5和ES6部分的內容不足,但仍是一本值得推薦的好書,讀懂理解透,對你有好處。
當年我也是一無所知,讀完這本書用了兩個月,完全理解透用了半年。
js基礎掌握了之後,可以通過其他方式對DOM/BOM/ES5/ES6/Node等其他知識進行補充 。瀉藥弊端就是沒了 jq就幹不了活了,
就好比學車的時候直接使用自動擋
你jq用熟以後,如果還是擔心「未來的發展和學習」,用半年時間自己把用到的jq api重寫一遍唄,做到還能兼容你現在的代碼就行了。兼容到IE8,想要點挑戰兼容到IE6.
大學真是最好的時候啊~我是充斥著一堆document.getXxxx,懶得去用jQuery, 建議你先了解原生的。你會發現就這樣寫下去會充斥著很多重複代碼,這時候你會想要一個類似utilities的文件封裝一些常用的代碼對外提供介面。然後有些代碼量太大的東西考慮用類,原型模式來提高代碼復用和可擴展性。
用什麼不重要,重要的是要知其所以然。看看jQuery的源碼,搞清楚為什麼那樣寫。另外,不要受別人鄙視這個鄙視那個的影響。先去了解,再做判斷。
沒有任何問題,請先把產品做好再說
不是專業前端,如果有什麼錯誤還請指正。
我以前也是直接從 jQuery 開始看的,後來還是回過頭看了兩遍紅寶書,以一個過來人的身份給你一些建議。如果你已經參加工作了,先用熟練 jQuery 很好,因為使用 jQuery 你可以跳過很多比較繁瑣的原理和細節:例如DOM、BOM(在 web 中使用 ES 的宿主瀏覽器的模型)、IE 和其他瀏覽器的事件機制(事件捕捉,事件冒泡)等。但是你現在還在讀大二,時間還很多,你完全不需要這麼著急。對於你來說,我強烈建議你在看完紅寶書後先使用一段時間的原生JS,在用了一段時間之後在回過頭看一邊紅寶書,這次你可以重點看:變數和作用域,面向對象的程序設計,函數表達式,DOM 0級 1級模型,瀏覽器事件模型這幾章(名字可能有出入)。而且這次,每一章的每一句話你都要去理解它。例如:
(1)函數運行在它被定義的作用域里,而不是它被執行的作用域里(函數的作用域鏈);(2)JavaScript 沒有方法重載 之類的(JS的函數是一個對象,而函數名是一個指針)。看完了之後你再開始使用 jQuery,同時也可以開始閱讀 jQuery 的源碼,這個時候學習起來是非常輕鬆的。而前面有人說,直接使用了 jQuery 後就去看 jQuery 的源碼,其實很不現實,給你舉幾個例子:
(1)jQuery 的事件委託:如果你不理解瀏覽器的事件冒泡機制,你百分之百看不懂為什麼可以通過給 document 綁定一個 click 事件,從而讓 body 也可以觸發這個 click 事件。(2)jQuery 用到了很多類似於 (func(){})() 的調用形式,如果你不理解 JS 的函數的話,你根本就搞不清它為什麼可以立即執行。(3)jQuery 很多地方用到了閉包,這些閉包到底起到了什麼作用?總之,磨刀不誤砍柴工。jQuery 就是通過對 JS 的一些特性的使用來封裝的一個個不同的函數,你可以通過查看 jQuery 的源碼來學習如何使用這些特性,但是首先,你得對這些特性有一些基本的了解。jquery就是為了解決瀏覽器間的差異。後面慢慢瀏覽器標準統一了就會不需要jquery了,最好還是要了解下原生的。所以沒什麼太大的影響。
兩年前端狗,水平很渣……but,我還是要來吹水!!!首先告訴你,高程這本書你看個一個月能完全弄懂的我真的不得不膜拜你,你很牛。這本書一直到現在我都還會去翻還會去看,兩年多看了很多前端的書,這本書一直放在最顯眼的地方因為我隨時可能都要看。這本書需要慢慢磨,看一回又看一回再看一回!然後就是,新手請真的真的真的不要依賴jq,請使用原生js,不然我面你絕對走不出三個問題。你讀書時間相對比較多,可以用你自己的電腦做伺服器搭個個人網站玩!這麼整一個下來你會發現很有成就感,那滋味要多酸爽就有多酸爽……
新浪的前端.jq只不過是個封裝好了的好用的選擇器庫.大點的公司前端一般都是要用到框架,組件化開發,沒有好的js功底框架你是用都用不利落的,更何況實際需求肯定又好多讓你改早別人代碼的.jq只能是替代了原生的選擇器方便些而已,自己封裝個簡單模塊,能做到多人復用移植性好就需要紮實的js功底了.第一次看js書肯定好多奇怪的點,不知道有什麼用.比如什麼閉包,原型繼承,事件代理.你可以試著看看jq源碼解析或者自己弄個js載入器,封裝個canvas操作庫,用到以後就知道犀牛書里的特性有什麼用了.而且前端一定要完整的學個後端語言,實現個簡單能存庫的網站,搭個RESTful api 對整個網站開發都有了解也對今後工作有幫助.jq只是把螺絲刀,前端的工作除了擰螺絲還有好多需要自己造工具或者改裝工具的地方 ~
我是從jquery開始接觸js的,我認為沒什麼不妥。至少對於csser來說,jquery還是比較容易入手的。
你看了一個月的高程,但是你完全不懂?那是因為你沒動手去實踐。
你完全可以試著脫離jquery用原生去寫你之前用jquery寫過的東西,或者用一下其他的庫。用任何框架、庫都離不開基本,就好像你用什麼less、sass,歸根到底還是css。以上為個人粗俗的見解。你應該了解下angular js 和 類似的框架
對於公司來說只要能解決問題就是好的,jquery最為合適,但是個人能力提升還是用原生的
推薦閱讀:
※Promise的隊列與setTimeout的隊列有何關聯?
※大廠前端對演算法的要求如何?
※如果dom結構很深 如何使less寫的更加優雅 層級不會過多
※為什麼現在又流行服務端渲染html?
※完全理解jQuery源代碼,在前端行業算什麼水平?
TAG:前端開發 | JavaScript | jQuery |