如何學習前端 轉載

作者:小不了
鏈接:https://zhuanlan.zhihu.com/p/23265155
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

鑒于時不時,有同學私信問我(老姚,下同)怎么學前端的問題。這里統一回復一下,如下次再遇到問我此問題同學,就直接把本文鏈接地址發給你了。

首先說句題外話。關于有人管我叫大神的事情。個人感覺這跟你買東西時,人家管你叫帥哥一樣,你答應與否都無妨。

正題開始,“前端怎么學”應該因人而異,別人的方法未必適合自己。就說說我的學習方法吧:我把大部分時間放在學習js上了。因為這個js的學習曲線,先平后陡。項目實踐和練習啥的,我不說了,主要說下工作之外的時間利用問題。我是怎么學的呢,看書,分析源碼。個人這幾天統計了一下,前端書籍目前看了50多本吧,大部分都是js的。市面上的書基本,差不多都看過。

?

第一個問題是,看書有啥好處?

?

好處應該是不言而明的,書看多了,基礎會逐漸夯實起來。看多了,自己的判斷力,自然就上來了。看別人的文章,就能很快判斷出,對方每塊兒講得對不對,哪塊兒又是自己不清楚的,模棱兩可的。當然也為看源碼,分析源碼提供了基礎。

10本書讀2遍的好處,應該大于一本書讀20遍10本書的交集,那就是基礎知識的核心,而并集那就是所有的知識。好書當然要多讀,反復讀。但是只讀一本是不行的。因為每本書的側重點都不一樣。從不同的側面,去理解一個知識點,是很有意義的。

所以特別佩服印度人,他跟你講英文,你一個詞語沒聽懂,他會蹦出n個同一意思的單詞,你聽懂一個,就ok了。看書也是這樣的,某一塊講得不透徹,不用擔心,其他書籍可以幫助你來了解。



第二個問題是,書籍推薦。

?

個人覺得不錯的,沒事可以翻翻的。書籍如下:

>《javascript面向對象編程指南》,風格輕松易懂,比較適合初學者,原型那塊兒講得透徹,12種繼承方式呢。

>《js權威指南》、《js高級程序設計》,這兩本書經典是經典,但是太厚,適合把其中任意一章都當成一本書來讀。洋洋灑灑,很難一口氣看完。比較適合當做參考書。

>《你不知道的javascript》狙擊js核心細節,閉包、原型、this講得都還清楚。目前《中冊》也出了,還在看。

>《js設計模式與開發實踐》js設計模式也是要學的,此書把js的設計模式講得非常清晰,一點不晦澀,看起來沒多少難度。

>《正則指引》,分析源碼時,如果正則表達式不懂,沒法進行下去的。此書相對來說講得比較清晰。

>《基于MVC的JavaScript Web富應用開發》,看完后,基本能寫出自己的mvc框架了。是本好書。

>《javascript函數式編程》,js是一門函數式語言,此書是函數式編程一個入門,函數是一等公民那是非常重要的。

>《js忍者秘籍》,jq作者寫的,沒有傳說中的那么難讀,話說就算你看完并理解所有知識點,也不會達到世界高手級別的。因為你還沒有做到隨心所欲。

>《javascript框架設計》,如果初看此書,會覺得此書有羅列代碼之嫌。在我看來,此書講究的是框架的全局觀。以上書籍是我認為是成就高手之路上必須看的,也需要反復看。

?

css相關的書籍,說實話我看得比較少,總共有六七本吧。有兩本必須推薦一下:

>《css權威指南》,css基礎知識點那是講得非常清楚的。什么層疊優先級、line-height啥的。不是隨便一本書都敢叫“權威指南”的。

>《css揭秘》,此書我也是不斷的看,此書才不屑于全面講css3各屬性呢。css規范文檔能講的,它只會講你最不在意的。此書解決的47問題,解決思路和解決方案同等重要,很有啟發性。以上各書你都可以不買,至少買本此書吧。



第三個問題,怎么看。

?

想必很多同學,都想看書,但是很難看下去。文字部分相對來說還能看看,一遇到代碼,頭皮就發麻了。此問題一開始時我也遇到的。

說一個學習理論。比如說學英語,有個開水理論。詞匯量必須達到6000才行,如果沒達到,英文水平不會上去的,這跟燒開水一樣,沒事燒燒,放著涼涼,從來沒燒到100度,那么此水是永遠不能喝的。一旦煮沸過,就可以隨時喝了。

20本書你看不下去,說明什么呢?任何一本書,你都沒看完過熟悉的,永遠只是前三章。別笑,我原先也是這樣的。

那么現在的問題是,怎么把一本書看完呢?很簡單,敲。《基于MVC的JavaScript Web富應用開發》這本書我看時,就是這樣,終于有一天,我下定決心要把此書從頭到尾敲一遍。文字加代碼都敲,然后就一章一章得看完了。代碼敲一遍后,你會發現,沒之前看起來的那么難。

如果你屬于一看書就犯困那種同學。強烈建議你把《javascript面向對象編程指南》此書從頭到尾敲一遍。堅持看完一本書后,信心就上來了。先保證看完一本再說,看完3本后,基本應該能做到幾天就能看一本了。萬事開頭難,加油吧。



第四個問題,看書的層次問題。

?

書看完后,要自己總結,要與其他書籍對比看。有同學同時對比著看《權威指南》和《高設》來的。隨便拿出個知識點,你都能閉著眼睛說得頭頭是道,說明水平夠了。

下一塊就是源碼的學習了。看框架源碼之前,想說一件事情:dom的api不懂,沒問題,你可以百度。

但是正則一定要先研究研究,不然大多數人去嘗試分析源碼時,遇到的挫折都在于此。

怎么去閱讀源碼呢?敲,照著敲。

有哪些代碼值得去敲呢?優秀框架或者庫的源碼都值得你去敲。但是拿jq來敲,來入門,那不行的。原因:太他么長了。八九千行呢!!

?

個人覺得underscore.js庫是不錯的第一個選擇。原因都是工具方法,敲完以后自己的水平應該略有小成吧。其實有一些api的實現,你要把它當成getElementById一樣,深深的印在腦海里。比如extend方法,必須張口就來。敲完underscore庫后,可以考慮去看看《javascript函數式編程》這本書了。

jq的源碼不好敲。那么zepto的源碼比較少1800多行,敲一天應該敲完了。敲幾遍后,把所有不懂的地方,都百度清楚,然后就可以寫自己的類jq的庫了。然后就可以作為一項技能寫進自己的簡歷里。比如“創建過自己的jquery庫”。當然敲的過程,還能幫助自己對jq的api認識。

然后是backbone.js,因為此框架是以類jq和underscore為基礎的mvc框架。代碼也沒多少行。敲吧。spine.js與backbone類似。可以在敲其之前,先看看那本《基于MVC的JavaScript Web富應用開發》。希望你的簡歷可以添加這么一筆,“創建過自己的mvc框架”。

其他的,我也敲過一些。包括jq.validate.js,包括一些插件。如果你愿意的話,bootstrap你可以去敲敲啊。源碼挺多的,可以按插件逐個來敲。分析明白了,輪播、分頁、下拉框等等的插件那還不是分分鐘隨手就寫一個了。最起碼看看人家api接口是怎么設計的也是極好的。話說個人在閱讀其css代碼中,也學到了不少東西。說到插件,有兩個必須提提,一個是表格插件,一個是樹。都敲完,簡歷里可以這么寫上,“創建過自己的UI框架”。

當然了,你也可以敲你喜歡的框架代碼,重要的是明白其實現原理,最好理解其為啥那么設計,如果對設計模式比較熟悉的話,會經常發現原來是這么回事。

照著敲只是分析源碼的入門,用途也是為了學習,最后能用在自己的項目中,那是才是正道。就算沒啥用,也是打發時間的好方式,比看電視劇強多了。我閑著無聊時,就背著敲underscore源碼。最后說句,如果你簡歷上能如期寫上那幾句話后,必須是大神。加油吧。



后記

寫本文的最初目的,正如文章開頭說的那樣,方便自己回復大家的提問。本站的任何一篇分享學習經驗的文章,基本都會引起共鳴,這確實是一個值得討論的話題。這里再說說幾個事情。

?

>有人問我前端工作經驗事情。

沒幾年。三年多。

>初學者或新手(beginner)怎么辦?

看書和分析源碼是重要的提高方式,但不適合新手。新手需要的是能快速的入門和入行,能快速的上手工作。一種快捷的學習方式就是看視頻。正如有的同學說得那樣,知道有哪些東西,怎么用就可以了。

看視頻是有好處的,首先它是一種被動學習方式。我最開始的入門也是看視頻來的,只需要看就行了。一遍沒懂,再放一遍,我基本上是1.5倍數去看的。

而讀書是一種主動方式,需要自己一頁一頁翻。需要自己主動的去理解。而很多東西,也許只是視頻老師一句話,就能突出的重點,需要我們自己去解讀。還有另一件事情是,比如發現自己某個知識點不太清楚,可以單獨去百度。比如this,文章很多的。這種學習方式也是快速掌握知識點的好辦法。

書籍需要技術評審,那么看文章一定要看看評論。不過視頻就不好說了,視頻一般都不會講得太深入,偶爾也有講錯的。當年我也曾被一些視頻誤導過,建議找不錯的視頻看看。各大網站培訓機構的免費視頻挺多的。

?

>看書和分析源碼的時機。

但已經工作一年半載時,正是提高的好時候,此時可以去看書了。全面系統的梳理知識點,掃清自己的盲區。如果只是靠項目經驗是不夠的,通過項目來學習,那肯定是必須的,工作本身就是一個學習的過程。

但是工作三年不看書的話,學又能學到多少呢?更何況每個項目都很類似,一直處在舒適區,那真就是5年經驗重復第一年的了。所以我不認同這句話:面試時強調自己的學習能力是工作能力不強的表現。3年經驗的水平,完全有可能超過5年的。

?

>沒有時間去學習?

如果你還沒畢業,就已經天天在本站混了,其實你領先了一大步。都是混過大學的,天天充斥著lol和電視劇的陪伴,我只想說進入社會是要還的。最可怕的是什么呢?該還、還不還(這幾個字別念錯了)。時間是有的,就看你愿意付出不。下班后學習,周末學習,節假日別人玩的時候,在家敲代碼,這樣才能領先別人。

?

>興趣問題?

興趣和擅長是一個良性迭代循環。你擅長某件事情,就會越喜歡它,越喜歡,就越愿意花時間,進而越擅長。此道理都懂,只是缺乏一個trigger。

如果你喜歡玩游戲的話,其實你可能非常適合做前端。玩游戲就是一個反饋機制,前端工作的反饋,相對其他工作來說也是非常及時的。代碼一改,網頁一刷,就看到效果了。擅長、優越感、成就感通常都是連在一起的。每看完一本書,我都覺得很有成就感。每敲完一個庫,也有成就感。

?

以上純屬一家之言,每個人的學習習慣、方式、態度都不一樣。先端正態度、找到自己的學習方法,進而養成堅持下去的習慣。最后說一句,你我共勉:只要你走在正確的道路上,不管、走得多慢,都是前進!

本文完。

?

不好意思,不小心打開了前置攝像頭!

文章來源:統一回復《怎么學JavaScript?》作者:前端網老姚(轉載已獲得作者許可)

在學習過程如果有任何疑問,請來極樂網提問!

?

轉載于:https://www.cnblogs.com/eat-too-much/p/6019760.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457687.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457687.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457687.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tcp前4字節消息長度_網絡基礎篇之TCP

?網絡分層什么是 TCP TCP 是面向連接的、可靠的、基于字節流的傳輸層通信協議。- 面向連接:通過三次握手建立一對一的連接( UDP 協議 可以一個主機同時向多個主機發送消息,即一對多);- 可靠的:通過序號、校…

使用Servlet實現用戶注冊

1、用戶注冊頁面代碼 <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&q…

年輕人的第一篇V語言筆記

V語言極限學習 我聽說V語言看文檔半小時就能完全掌握&#xff1f;&#xff1f;&#xff1f;&#xff1f;以我的智商一小時掌握不了我就給各位科普一下廣告法&#xff1f;&#xff1f;&#xff1f; 宇宙慣例hello world // first v code fn main(){printIn("hello world…

android studio運行手機時出錯怎么解決_小程序 android ios h5解決方案

你現在開發android,ios,小程序用什么工具&#xff0c;怎么開發的&#xff1f;還在單個端的開發嗎&#xff1f;今天我們主要討論的是一次開發多端使用的技術&#xff0c;也是這兩年比較流行的開發方向。現在的終端太多了&#xff0c;app兩個端android和ios,小程序有微信&#xf…

Android SDK上手指南:應用程序數據

版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請標明出處。 https://blog.csdn.net/chaoyu168/article/details/52996965 在本系列教程當中&#xff0c;我們將學習如何從零開始進行Android SDK開發。我們已經熟悉了Android應用程序的結構與基本組成元素&#xff0c;…

設計微服務架構需要解決的問題

問題&#xff1a; 劃分服務的原則是什么服務之間選擇何種輕量級的通信協議如何做到服務的獨立部署如何確定使用何種編程語言?控制多語言帶來的復雜度如何做到服務的去中心化如何解決大量微服務引入的運維成本轉載于:https://www.cnblogs.com/fight-tao/p/5641286.html

Django Model設計詳解

Django Model 設計 Django Model設計是Django五項基礎核心設計之一&#xff08;Model設計&#xff0c;URL配置&#xff0c;View編寫&#xff0c;Template設計&#xff0c;From使用&#xff09;&#xff0c;也是MVC模式中重要的環節。 如果圖片無法訪問&#xff0c;大家可以移…

python設置全局變量失敗_Python全局變量與global關鍵字常見錯誤解決方案

在Python的變量使用中&#xff0c;經常會遇到這樣的錯誤:local variable a referenced before assignment它的意思是&#xff1a;局部變量“a”在賦值前就被引用了。比如運行下面的代碼就會出現這樣的問題&#xff1a;a 3def Fuc():print (a)a a 1Fuc()? 但是如果把 a a …

Atititi tesseract使用總結

Atititi tesseract使用總結 消除bug&#xff0c;優化&#xff0c;重新發布。當前版本為3.02 項目下載地址為&#xff1a;http://code.google.com/p/tesseract-ocr。 Windows cmd命令行使用Tesseract-OCR引擎識別驗證碼: 1、下載安裝Tesseract-OCR引擎(3.0版本才支持中文識別) t…

Javascipt數組去重的幾種方式

方法一 function unique(arr) {var retArr [];for (var i 0; i < arr.length; i) {(retArr.indexOf(arr[i]) -1) && retArr.push(arr[i]);}return retArr; } 方法二 function unique(arr) {return arr.filter(function(item, index, array) {return array.indexO…

01_JS語法

JS語法 嚴格區分大小寫以;結尾&#xff0c;不寫瀏覽器會自動加&#xff0c;但不準確&#xff0c;且會占用瀏覽器資源自動忽略多個空格和換行 寫在哪 所有JS代碼都必須依托網頁運行 內嵌 寫在html的script標簽中 <script>// JS代碼 </script>事件 寫在某個ht…

pythonwhile循環love_python基礎之while循環及編碼

while 條件&#xff1a;循環體死循環&#xff1a;沒有終止條件(修改方法&#xff1a;1.改變條件2.使用break)break 終止當前循環contiune&#xff1a;跳出本次循環&#xff0c;繼續下次循環break和contione必須在循環體里while 條件&#xff1a;循環體else&#xff1a;結果當wh…

css頁面布局

居中布局 水平居中 父元素和子元素的寬度都未知 inline-block text-ailgn .child{display:inline-block;} .parent{text-align:center;} 優點&#xff1a;兼容性好 缺點&#xff1a;子元素文本繼承了text-align屬性&#xff0c;子元素要額外加text-align:left; table ma…

02_JS變量

JS變量 字面量 常量&#xff0c;不可變量 變量 變量用 var 變量名聲明 命名 變量命名以數字字母下劃線和$組成&#xff0c;不能以數字開頭&#xff0c;還可以是utf-8的任意字符&#xff0c;包括中文&#xff0c;一般采用駝峰命名法 常用的幾個函數 alert():瀏覽器彈窗d…

Rotate String

Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given "abcdefg". offset0 > "abcdefg" offset1 > "gabcdef" offset2 > "fgabcde" offset3 > "efgabcd"分析&am…

音視頻播放、錄音、拍照

音頻 在iOS中音頻播放從形式上可以分為音效播放和音樂播放。前者主要指的是一些短音頻播放&#xff0c;通常作為點綴音頻&#xff0c;對于這類音頻不需要進行進度、循環等控制。后者指的是一些較長的音頻&#xff0c;通常是主音頻&#xff0c;對于這些音頻的播放通常需要進行精…

python 遞歸函數與循環的區別_提升Python效率之使用循環機制代替遞歸函數

斐波那契數列當年&#xff0c;典型的遞歸題目&#xff0c;斐波那契數列還記得嗎&#xff1f;def fib(n):if n1 or n2:return 1else:return fib(n-1)fib(n-2)當然, 為了程序健壯性&#xff0c;加上try...except...def fib(n):if isinstance(n, int):print(兄弟,輸入正整數哈)ret…

03_JS數據類型

JS數據類型 基本數據類型 String 字符串類型&#xff0c;申明時用單引號或雙引號引起來&#xff0c;兩種引號不可嵌套&#xff0c;不可混用 Number 數值型&#xff0c;有兩個特殊的數字 Infint:無窮大NaN&#xff1a;非數值型數字&#xff0c;不與任何類型相等 Boolean …

7.5

姓名 崔巍 時間 2016年7月5日 學習內容 最后一次確定同步控制力度等實現細節。 學習了Visual Studio C#軟件測試方面的工具。鞏固了等價類黑盒測試方法的相關理論&#xff0c;并且學習了集成測試、回歸測試的相關內容&#xff0c;并進行了測試。 集成測試&#xff0c;…

python scratch ev3_如何在scratch上連接樂高ev3?

樂高教育的官網有關于EV3使用Python的詳細介紹https://education.lego.com/zh-cn/support/mindstorms-ev3/python-for-ev3?education.lego.com來自網易有道Scratch是現在小朋友們最熱的編程工具&#xff0c;也是各學校和培訓機構對小學生編程的入門首選。網易有道Kada平臺是一…