眾所周知,前端近幾年鬧了一場革命。前端在程式設計領域也掀起了學習潮。至少在中國,從2013年下半年至今,在搜尋指數上,有著爆炸式的增長。可以看下資料:百度指數,Google指數。
一邊是日新月異的新知識不斷的衝擊著前端,一邊是各種新人瘋狂湧入前端領域。這兩股新流衝擊下,倒是火了很多技術社群、問答網站,如:SegmentFault。
開啟SegmentFault
,首頁問答流上,前端相關的題目(包括Node),不說佔十之八九,那也是半壁江山。即使是在老牌問答網站StackOverflow上,javascript
相關的問答也是最多的。
我是很喜歡回答各種問題的人,一直逛著SegmentFault。幾個月下來,我看到的出現最頻繁的前端問題如下:
- Vue、React哪裡哪裡報錯了,求看(React相關的少很多,angular更少)。
- 框架相關的一些UI、外掛,如ElementUI什麼什麼元件怎麼用、vue-router哪裡哪裡有問題。
- javascript this指向的問題、閉包的問題、陣列迴圈相關問題等。
- webpack、npm等工程化相關配置問題。
那這些問題的本身有什麼問題呢?
90%的問題,都可以通過文件查詢到。而且大多不是文件偏僻、篇幅少的角落,更多的是諸如vue的父子元件通訊
這類文件長篇幅說明的問題。
而如this指向、閉包這類問題,以及其他語法上的問題,都是基礎知識,而且大多都被網上各種部落格講爛了。想要理解它,閉著眼睛都能搜到。
還有很多問題都是重複式的問題,只要自己網上搜搜,就能找到答案。
這些問題反應了什麼現象?
- 確實前端很火,引來了一批批新人。
- 前端小白們如火如荼的學習著現在前端流行的新技術棧。
- 但大多忽視了基礎知識的學習。
- 而且不知道提問題的正確姿勢。
- 甚至有些過分的伸手黨。
為什麼會這樣?
我猜測是如下原因:
- 很多人學前端並非是對前端感興趣,而是覺得前端門檻低,市場火爆,於是學了前端。沒了興趣就少了耐心,少了耐心就不太想看文件、書籍。
- 還有些新人並非科班出生,導致完全不明白程式設計學習的流程,以為就是靠問。
- 培訓班也有鍋。標榜著幾周就能精通前端、搞定大公司。在教學上輕基礎、重工具,導致前端學習者急功近利,以為熟練操作vue了就是精通前端了。
- 前端新人本身對新知識非常渴望,因為培訓班或者自學一段時間後,發現沒掌握的知識太多太多,在市場並沒有競爭力。所以也會顯得比較著急。
如果同學你正好符合我上述所說的,要注意了,你已經誤入歧途了。前端門檻是低,但學習曲線不短。想找到一份好工作,也不是會用vue就夠的。
我曾經聽一個學弟說,自己的目標就是把Vue掌握了寫溜了,我表示非常不贊同。
可能很多新人也是這個想法,但是我知道,大多數人所說的掌握,寫溜,並非是真正的掌握。其實就是把文件背熟了,熟悉了語法糖,瞭解了生命週期過程。學習vue是非常好的,但真正的學習它不是就學習它怎麼用,而是要深入學習它的設計理念、實現方式、閱讀理解原始碼。
可惜的是,你可能根本看不懂它的原始碼。為什麼?因為基礎就沒掌握。所以你的目標走偏了,目標應該是要先掌握好Javascript本身。在此之上,你才有可能說自己掌握了Vue。
那什麼是正確的學習姿勢?
首先打基礎,html,css,js->es6,這些已經夠吃一壺。怎麼學?讀書、看它們的參考文件,掌握基礎用法。
在此同時,可以用vue這些框架去做一些工程化的專案實踐,遇到不懂的地方,不必過分深究,會浪費很多時間。等你基礎掌握到一定階段,驀然回首時,會頓時大悟。
基礎掌握後,工具也能熟練運用了,甚至能快速的掌握它。之後再怎麼深入學習,這裡就不探討了。
另外,當我們學習一個工具的時候,我們最基礎的應該要知道人家到底是個什麼?比如學習Vue,首先會介紹它是MVVM框架,你要是連MVVM都不知道,又怎麼去學Vue呢?
我偶爾會看到一些問題:問在vue中如何去獲取dom頁面上的資料。原來是用著vue,然後以Jquery操作dom的方式去開發。這就是因為自己都不知道自己用的是什麼。
我知道,前端知識實在是太多了,比如說node。又夠大家吃一壺,難免會遇到問題,解決不了。但又確實需要解決它才能進行專案實踐。不可避免的得提問題。
那什麼是正確的提問題姿勢?
- 遇到出錯,首先應該想到的是查閱文件。很多時候我們遇到的問題,是因為自己用的姿勢不對,到底怎麼用,文件上可能已經寫的一清二楚。比如我要在vue2.x的子元件中去修改父元件的傳值,我一修改就報錯,該怎麼辦?怎麼辦?查下文件就一清二楚。
- 文件查不到該怎麼辦?確實有時候,一些問題是文件中沒暴露的,或者說沒描述清楚的。這時候我們應該先在網上搜尋該問題。哪兒搜?Google,專案本身的Issue,百度雖然大家都不喜歡,但真的去搜百度也無可厚非。
- 別人也沒遇到怎麼辦?如果是工具本身的問題,首先想到的應該是看原始碼,原始碼實在看不懂或者理解不了,再去提問。
- 其他一些業務上的實現問題,自己確實沒能力實現,可以去提問。
- 但提問題不僅僅是為了解決當下問題,更重要的是提高自己解決問題的能力。
第五點,我再單獨說一下。有時候我會看到一些問題的最佳答案,並非是真正的最佳答案。很多題主,就想著能直接幫他解決當下問題就好。而有的答案雖然沒有直接給出程式碼,卻給了非常好的思路或解釋,亦或者給了其他更好的設計方案,亦或者是給了某些相關的文件連結。
本來是授人以魚不如授人以漁,但有些人卻只要現成的魚。
寫在最後
所以啊,在目睹了很多白痴問題後,我終於發出了一聲吶喊,答題救不了前端新人。希望這篇文章能稍微的讓一些真正愛好前端的同學,更好的去學習前端。拿來主義,不是把別人的程式碼拿來,而是要把別人的知識拿來。