1,學習js分幾個階段,沒入門,入門初學者,中級水平,高級水平,ppt水平。
2,沒入門的如何學習?
我當初是先學jquery,有css和html基礎,有css基礎看jq的語法很簡單,就是選擇符,jq的api懂高中英語就夠了,猜也猜的出來意思,然后下載基本jq的chm手冊,對着挨個看一遍。(這個挨個看一遍的意思就是一行一句的逐個看一遍,看不懂的別死扣,先看完再說)。
看完一遍之后,心中有數,哦,原來有個ajax函數可以訪問網絡資源,有個success可以寫回調方法,超時怎么辦?幾個一起同時發怎么辦?不管了,用到再說。哦,原來有個find函數可以查找dom節點,哦,原來有個serialize函數可以序列化表單值,哦,原來有個toggle函數可以做切換用,哦,有個fn可以掛着寫插件用,哦,切換cls這樣做就行了,哦,請求json數據這樣配置參數就可以了。
做到了解,你就成功了,用到的時候知道jq能干什么,不能干什么,干什么的時候去看哪一章,再去仔細研究,做東西開始有點慢,做起來幾個東西之后就手熟了。
同理,我學習yui2,kissy,mootools,nodejs,react,ng,甚至swift部分也是這樣對着手冊來的,反復幾遍就可以了。
入門的意思就是概括一下,我知道有哪些api能干什么,具體怎么干,用的時候再說。
2,入門初學者。
我看完手冊了,也寫了幾個小項目了(切換切換class,套幾個jq插件,ajax取完數據又html放到指定位置了類似這種需求)。我感覺我可牛逼啦,終於會寫交互js啦,感覺什么都不怕啦,其實就是剛入門而已。
我們來看看入門初學者怎么提升js編程技巧,個人經驗,切勿照搬模仿,我們會使用框架工具庫完成簡單需求的同時,我們無法理解一些復雜功能的開發原理。比如一個簡單的放大鏡特效,一個裁切頭像大小的功能,一個輪播組件,一個搜索智能提示,一個at圈人功能,甚至一個回到頂部的fixed按鈕,或者輸入框計數,表單驗證組件,動態表格,長連接聊天功能,浮出層,移動端的swiper,動畫函數,選擇器,字符串模板,富文本編輯器?太多啦?一點也不多,我還沒說全呢,幾乎所有你在網頁里見到的一些現成交互,其實有個學名,慢慢看,挨個寫一遍,兩遍,三遍,先不談封裝成組件,api是否優美,就說能不能寫出來,剛入門的人一定say no。
說白了,經驗的積累是前端開發非常重要的一條,有些東西你沒寫過你還真就是不會寫,或者你知道怎么寫,但是你沒寫過也別輕易說自己會,因為兼容問題,很多東西細節上你還是沒有體會。所以,我第一次工作寫一個頭像裁切功能,我想了好多個夜晚,也沒弄明白原理,查了好多文章,又寫了許多demo,最后還是做了出來,但是會有一些極限情況下的bug?一個組件一個組件的擼,一遍又一遍的擼,是初學者最好的提升方法。
等你做到基本網頁里任何一個功能看一眼就知道怎么寫或者都親自寫過的時候(不是demo級別,是上線級別),你就已經不是初學者了,大概這個速度快也要1年左右時間,這也就是為什么一些功能招聘都要3年以上的原因了,經驗包的積累不是看幾本書就搞的定的。
3,中級水平。
你發現你在編寫javascript功能時已經沒什么好怕的東西了,也就是說,衡量一個需求時,你從來不會說no,而只是預估時間的時候,基本就已經達到中級水平了,這個時候你明確的知道自己在寫的是什么,也能讀懂別人寫的是什么,而且擁有了一些自己平時積累所寫得插件,組件,並封裝的好好的,那么,就完美了么?你發現你遇到了瓶頸,不知道如何提高自己了,打開了知乎,可能問下了這個問題:《如何提高javascript編程高級技巧》
這個時候你需要往高級一步了,你可能熟練使用jq或者某一框架,基於某些框架二次開發了非常炫酷的插件組件,並且了解了設計模式,一些高大上的名詞,業務需求無法滿足你,自動化工具grunt和gulp用的妥妥的,總之,很多事情在你眼里自己無所不能,哎呀我操,為什么呢,我是不是凱瑞了全場?
這個時候,你需要的是開始思考,從最開頭開始擼你的東西了,比如我們往往喜歡使用jq或者zepto,我們的插件往往是基於他們或者說我們的經驗都是在某一個領域框架下實現的,回過頭來看,這些東西真的好嗎,他們是如何實現的?為什么要這樣設計,一個超過5000行的抽象類怎么組織,設計模式你真的理解嗎,js的奇淫技巧你會幾樣,有沒有見過一些根本看不懂的js代碼,那些大牛們到底在說什么呀,es6的api到底有多少個呀,那些新手都看得懂jq(真的懂?),為毛自己寫不出來?grunt到底是怎么運行的啊,v8的源碼是什么樣的啊,測試用例是什么鬼啊?
很多時候,我在讀一個庫的源碼時,在看devDependencies的時候,意外又發現了數個不懂的東西,有時候見到一段代碼會會心一笑,有時候又會大喊卧槽,從感覺自己什么都知道,到感覺自己什么都不知道,可能就是你突破瓶頸的時候了。
4,高級水平。
我們公司也有高級工程師的技術序列要求,我剛好評過,基本考察點都不在你如何實現一個技術細節了,而是考察你如何從0到1的這個過程,以及可能涉及到2,3,4的預判能力。還有就是在業界都在傳一些東西很好很強大的時候,你已經可以把他轉換為實際的生產力了,能發現一些好的東西里面不足的地方,並能自己改進,永遠不滿足,不崇拜大牛,因為自己就是大牛。說白了,你寫的東西要能讓很多人解決一些經常解決不了的問題,比如怎么能讓你的系統更快,依賴更少,代碼更小,開發起來更爽,新人如何更好的上手,api設計的美不美,實現的每一行代碼都精雕細琢,review別人得東西總能提出自己的看法,總之,Legendary啦!
5,可能你需要多看看《超級演說家》。鏈接:https://www.zhihu.com/question/29933334/answer/46249405
來源:知乎