在學習前端時,你是怎樣消除你心浮氣躁,急於求成的心態的?

在學習過程中難免心浮氣躁,急於求成,恨不得把前端所有能學的都一口氣吃完。先說下目前的情況,目前在一家外包公司上班,HTML和css不說精通也能說個熟練,jq用的也還行,有js基礎,能編寫最基本的Js代碼,公司沒人帶,除了HTML和CSS其他都是自學的。既然打算往前端發展那就要深入前端,不能一直只是寫寫HTML,CSS和jq,那麼問題來了,希望各位大神能指點指點。我給自己定好了幾個計劃:

1.先繼續深入Js,再學習框架。

2.先學習前端框架,如angularjs,reactjs等等牛逼的框架,再深入Js,當然要學的話也是選擇其中一個框架好好學。

3.先深入學習HTML5和CSS3再考慮上面兩條。

當然前端也遠遠不止這些,有時學這個又想著那個,一步一個腳印的道理我懂,但是有前輩指點總比自己像個無頭蒼蠅一樣亂撞好,所以,想請各位前輩幫我我指條明路,先謝啦!


等老,老了就不會了。


既然你找到這篇文章來,說明你是真心想學好JavaScript的。你沒有想錯,當今如果要開發現代網站或web應用(包括互聯網創業),都要學會JavaScript。而面對泛濫的JavaScript在線學習資源,卻是很難找到一份高效而實用的方法去學習這個「web時代的語言」。

有一點需要注意,幾年前我們需要知道一個真正的伺服器端語言(比如PHP,Rails,Java,Python 或者 Perl)去開發可擴展,動態的,資料庫驅動的web應用,而現在只用JavaScript就可以實現了。

學習時長:6~8周

學習前提:中學水平,無需編程經驗

更新(2014-1-7)

在Reddit上創建了一個學習小組

January 2014, 「Learn JavaScript」 Study Group on Reddit

目錄

  • 不要這樣學習JavaScript
  • 本課程資源
  • 1~2周(簡介,數據類型,表達式和操作符)
  • 3~4周(對象,數組,函數,DOM,jQuery)
  • JavaScript終極編輯器:WebStorm
  • 第一個項目-動態問答應用
  • 5~6周(正則表達式,Window對象,事件,jQuery)
  • 7周,可延長到8周(類,繼承,HTML5)
  • 繼續提升
  • 一些鼓勵的話

上面的課程大綱提供了一個結構化和富有啟發性的學習線路,從初學者到有所建樹,把JavaScript學對學透。

不要這樣學習JavaScript

不要一開始就埋頭在成堆的JavaScript在線教程里 ,這是最糟糕的學習方法。或許在看過無數個教程後會有點成效,但這樣不分層次結構地學習一個東西實在是十分低效,在實際用JavaScript建立網站或web應用時你還是會頻繁的卡住。總的來說,這種學習方法會讓人不知道如何將語言當做工具來使用——當做個人工具來用。

另外,也許有人會建議從尊敬的JavaScript教父Douglas Crockford寫的《JavaScript語言精粹》開始學習JavaScript。然而,雖然Crockford先生對JavaScript無所不知,被譽為JavaScript世界的愛因斯坦,但他的《JavaScript語言精粹》並不適合初學者學習。這本書沒有通透、清晰、明了的闡述JavaScript的核心概念。但對於更高級的學習路線,我倒會建議你看看Crockford先生的視頻。

還有,不要只從Codecademy等網站學習JavaScript,因為即使知道怎麼編寫一大堆JavaScript代碼小片段,還是不能學會怎麼建立一個web應用程序。即便如此,在後面我還是會建議把Codecademy當做補充的學習資源。

本課程資源

更新:Reddit用戶d0gsbody4月8號在Reddit上建立了一個學習小組。他和其他組員都非常積極和樂於助人。我建議你加入這個小組,他們會讓你保持積極性且幫助你更好的學習JavaScript。畢竟獨自折騰JavaScript還是有點難度的。鏈接:Learning JS Properly – Study Group on Reddit

請在以下兩本書中選一本,第一本比較適合有編程經驗的人,而另一本則適合完全沒有編程經驗的初學者。

我個人推薦第一本書,因為作者對各個知識點都闡述得非常好且涵蓋了一些高級JavaScript知識點。但是,要看懂這本書你至少要對web開發有一定的基本了解。所以,如果你有一點點編程經驗或者web開發經驗(不一定是JavaScript),那就買這本書吧。

  • 紙質版(英文) :Professional JavaScript for Web Developers
  • 紙質版(中文) :JavaScript高級程序設計(第3版)
  • Kindle版(英文):Professional JavaScript for Web Developers
  • Kindle版(中文):JavaScript高級程序設計(第3版)

如果你沒有編程經驗,可以買這本:

  • 紙質版(英文) :JavaScript: The Definitive Guide
  • 紙質版(中文) :JavaScript權威指南(第6版)
  • Kindle版(英文):JavaScript: The Definitive Guide
  • Kindle版(中文):JavaScript權威指南(原書第6版)

免費註冊Stack Overflow,這是一個編程領域的問答論壇。在這裡提問題得到的回答比Codecademy要好,哪怕你的問題非常基礎,看起來很傻(記住,從來沒有愚蠢的問題)。

免費註冊Codecademy,這是一個在線學習平台,你可以直接在瀏覽器裡面寫代碼。

JavaScriptIsSexy上的一些博文,包括對象,閉包,變數的作用域和提升,函數等等。

JavaSctipt學習路線

完成整個課程大綱需要花上6~8周的時間,將學會完整的JavaScript語言(包括jQuery和一些HTML5)。如果你沒有時間在6個星期里完成所有的課程(確實比較有挑戰性),盡量不要超過8個星期。花的時間越長,掌握和記憶各種知識點的難度就越大。

1~2周(簡介,數據類型,表達式和操作符)

  1. 如果你還不是很了解HTML和CSS,完成Codecademy上的web基礎任務。
  2. 閱讀《JavaScript權威指南》或者《JavaScript高級程序設計》的前言和第1~2章。
  3. 十分重要:在書中遇到的每個樣例代碼都要動手敲出來並且在火狐或Chrome瀏覽器控制台中跑起來、盡量蹂躪它(做各種試驗)。也可以用jsfiddle,但不要用Safari瀏覽器。我建議用火狐搭配Firebug插件去測試和調試代碼。瀏覽器控制台就是可以讓你編寫和運行JavaScript代碼的地方。
  4. 完成Codecademy JavaScript Track上的Introduction to JavaScript部分。
  5. 閱讀《JavaScript權威指南》第3~4章。或者閱讀《JavaScript高級程序設計》第3~4章。你可以跳過位操作部分,在你的JavaScript生涯中一般不會用上這個。

    再次說明,記得要不時停下來把書本的代碼敲到瀏覽器控制台里(或者JSFiddle)做各種測試,可以改變幾個變數或者把代碼結構修改一番。
  6. 閱讀《JavaScript權威指南》第5章。至於《JavaScript高級程序設計》則暫時沒有閱讀任務,因為前面已經把相關知識覆蓋了。
  7. 完成Codecademy JavaScript Track上的2~5部分。

3~4周(對象,數組,函數,DOM,jQuery)

  1. 以下三選一:
    • 閱讀我的博文JavaScript 對象詳解.
    • 閱讀《JavaScript權威指南》第6章。
    • 閱讀《JavaScript高級程序設計》第6章。注意:只需要看「理解對象」(Understanding Objects)部分。兩本書會涉及更多的一些細節,但只要看完我的博文,你可以完全放心地跳過這些細節。
  2. 閱讀《JavaScript權威指南》第7~8章或者《JavaScript高級程序設計》第5和7章。
  3. 此時,你應該花大量時間在瀏覽器控制台上寫代碼,測試if-else語句,for循環,數組,函數,對象等等。更重要的是,你要鍛煉和掌握獨立寫代碼,不用藉助Codecademy。在Codecademy上做題時,每個任務對你來說應該都很簡單,不需要點幫助和提示。如果你還卡在Codecademy上,繼續回到瀏覽器上練習,這是最好的學習方法。就像詹姆斯年輕時在鄰居的籃球場上練球,比爾蓋茨在地下室里學習編程。持續地練習,這一點點的進步積累起來效果會非常驚人。你要看到這個策略的價值,相信它是可行的,全心投入進去。Codecademy會造成已掌握的錯覺。使用Codecademy最大的問題是,它的提示和代碼小片段會讓人很容易就把答案做出來,造成一種已經掌握這個知識點的錯覺。你可能一時看不出來,但這樣做你的代碼就不是獨立完成的了。但目前為止,Codecademy依然是學習編程的好幫手。特別是從一些基本的代碼結構如if語句,for循環,函數和變數去指導你了解小項目和小應用的開發過程。
  4. 回到Codecademy完成JavaScript路線。做完6~8部分(數據結構做到Object 2)。
  5. 實現Codecademy上Projects路線的5個基礎小項目(Basic Projects)。做完之後,你已不再需要Codecademy了。這是一件好事,因為自己做的越多,學得就越快,就能更好準備開始獨立編程。
  6. 閱讀《JavaScript權威指南》第13,15,16和19章。

    或者閱讀《JavaScript高級程序設計》第8,9,10,11,13和14章。這本書沒有涉及到jQuery,而Codecademy上的jQuery知識也覆蓋得不夠。可以看看jQuery的官方教程,免費的:http://try.jquery.com/

    你也可以在《JavaScript權威指南》第19章了解更多的jQuery知識。
  7. 完成全部的jQuery教程http://try.jquery.com/。

JavaScript終極編輯器:WebStorm

  • 在你實現第一個項目之前,如果打算以後做JavaScript開發者或者經常用到JavaScript,最好現在就去下載WebStorm的試用版。這裡可以學習怎麼使用WebStorm(專門為這個課程寫的)。
  • 毋庸置疑,WebStorm是JavaScript編程最好的編輯器(或IDE)。30天試用後要付$49.00,但作為JavaScript開發者,這應該是除了買書以外最明智的投資了。
  • 確保在WebStorm中啟用JSHint。JSHint是一個檢查JavaScript代碼錯誤和潛在問題的工具,強制你的團隊按照規範寫代碼。用WebStorm最爽的地方是JSHint會自動在錯誤的代碼下顯示紅線,就像文字處理程序中的拼寫檢查。JSHint會顯示一切的代碼錯誤(包括HTML),促使你養成良好的習慣,成為更好的JavaScript程序員。這很重要,當你真正意識到WebStrom和JSHint對你的巨大幫助時,你會回來感謝我的。
  • 此外,WebStorm是一個世界級,專業人員使用的IDE,用來編寫專業的JavaScript web應用,所以你以後會經常用到它。它還結合了Node.js,Git和其它JavaScript框架,所以即使你成為了明星級的JavaScript開發者,你還是會用到它的。除非以後出現了更多的JavaScript IDE。
  • 公平起見,我在這裡提一下Sublime Text 2,這是僅次於WebStorm的JavaScript編輯器。它的功能不及WebStorm豐富和完整(即使添加了一堆插件)。做小修改的時候我會用到Sublime Text 2,它支持很多語言,包括JavaScript,但我不會用它來構建完整的JavaScript Web應用。

第一個項目-動態問答應用

此時,你已經掌握了足夠的知識去建立一個穩固的,可維護的web應用。在做完我為你設計的這個應用之前不要看後面的章節。如果你卡住了,去Stack Overflow提問並且把書上相關的內容重新看一遍直到完全理解這些概念。

接下來開始建立一個JavaScript問答應用(還會用到HTML和CSS),功能如下:

  • 這是一套單選測試題,完成之後會顯示用戶的成績。
  • 問答應用可以產生任意多的問題,每個問題可以有任意多的選項。
  • 在最後的頁面顯示用戶的成績。這個頁面只顯示成績,所以要把最後一個問題去掉。
  • 用數組存所有的問題。每個問題包括它的選項和正確答案,都封裝成一個對象。問題數組看起來應該是這樣:

1

2

3

4

5

6

7

8

9

10

11

12

// 這裡只演示一個問題,你要把所有問題都添加進去

var allQuestions = [

{

question: "Who is Prime Minister of the United Kingdom?",

choices: [

"David Cameron",

"Gordon Brown",

"Winston Churchill",

"Tony Blair"],

correctAnswer: 0

}

];

當用戶點擊「Next」時,使用document.getElementById或jQuery動態的添加下一個問題,並且移去當前問題。在這個版本里「Next」是唯一的導航按鈕。

你可以在本文下方評論求助,最好是去Stack Overflow提問,在那裡會有及時而準確的回答。

5~6周(正則表達式,Window對象,事件,jQuery)

  1. 閱讀《JavaScript權威指南》第10,14,17,20章。
  2. 或者閱讀《JavaScript高級程序設計》第20,23章。
  3. 記得要把樣例代碼敲到瀏覽器控制台上,儘可能蹂躪它,做各種測試,直到完全理解它是怎麼工作,它能幹些什麼。
  4. 此時,你用起JavaScript來應該很順手,有點像武林高手要出山了。但你還不能成為高手,你要把新學到的知識反覆使用,不停的學習和提升。
  5. 升級之前做的問答應用
    • 添加客戶端數據驗證:保證用戶回答了當前問題才能進入下個問題。
    • 添加「Back」按鈕,允許用戶返回修改答案。最多可以返回到第一個問題。注意對於用戶回答過的問題,選擇按鈕要顯示被選中。這樣用戶就無需重新回答已經答過的問題。
    • 用jQuery添加動畫(淡出當前問題,淡入下個問題)
    • 在IE8和IE9下測試,修改bug,這裡應該會有得你忙了。 ;D
    • 把問題導出JSON文件
    • 添加用戶認證,允許用戶登陸,把用戶認證信息保存在本地存儲(local storage,HTML5瀏覽器存儲)。
    • 使用cookies記住用戶,當用戶再次登陸時顯示「歡迎用戶名回來」。

7周,可延長到8周(類,繼承,HTML5)

  1. 閱讀《JavaScript權威指南》第9,18,21,22章。
    • 或者閱讀我的博文JavaScript面向對象必知必會
    • 或者閱讀《JavaScript高級程序設計》第6,16,22,24章,第6章只讀「創建對象」(Object Creation)和「繼承」(Inheritance)部分。注意:這部分是本課程中技術性強度最大的閱讀,要根據自身的狀況考慮要不要全部讀完。你至少要知道原型模式(Prototype Pattern),工廠模式(Factory Pattern)和原型繼承(Prototypal Inheritance),其它的不作要求。
  2. 繼續升級你的問答應用:
    • 頁面布局使用Twitter Bootstrap,把問答的元素弄得看起來專業一些。而作為額外獎勵,用Twitter Bootstrap的標籤控制項(譯者註:原文地址失效,已改)顯示問題,每個標籤顯示一個問題。
    • 學習Handlebars.js,將Handlebars.js模板用在問答應用上。你的JavaScript代碼中不應該再出現HTML代碼了。我們的問答應用現在越來越高級啦。
    • 記錄參加問答的用戶成績,展示用戶在問答應用中與其他用戶的排名比較。
  3. 在學完Backbone.js和Node.js後,你會用這兩種最新的JavaScript框架重構問答應用的代碼,使之變成複雜的單頁面現代web應用。你還要把用戶的認證信息和成績保存在MongoDB資料庫上。
  4. 接下來:構思一個項目,趁熱打鐵迅速的去開發。卡住的時候參考《JavaScript權威指南》或者《JavaScript高級程序設計》。當然,還要成為Stack Overflow的活躍用戶,多問問題,也要盡量回答其它人的提問。

繼續提升

  1. 精通backbone.js
  2. 中高級JavaScript進階
  3. 不側漏精通Node.js
  4. Meteor.js入門(即將出爐)
  5. 三個最好的JavaScript前端框架(即將出爐)

一些鼓勵的話

祝你學習順利,永不放棄!當你做不下去覺得自己很蠢的時候(你會時不時這麼想的),請記住,世界各地的其他初學者,甚至是有經驗的程序員,也會不時產生這種想法的。

如果你是完全的初學者,特別是過了青少年時期的人,開始寫代碼的時候也許很困難。年輕人無所畏懼,也沒有什麼負擔,他們可以花大量的時間在喜歡的東西上。所以各種挑戰對他們來說也不過是短暫的障礙罷了。

但過了青少年期後你會希望快速的見到成效。因為你沒有這麼多的時間去花上幾個小時就為了搞清楚一些細節的東西。但這些東西你必須深入去理解它,不要因此沮喪,堅持完成課程的任務,把bug都找出來,直到你完全理解。當你到達勝利

彼岸時,你會知道這一切都是值得的,你會發現編程非常有趣而且在上面花的時間都會得到可觀的回報。

一個人必須去感受和領悟構建程序帶來的強烈快感。當你一步步的掌握知識點,一點點的將程序搭建起來時,就會對自己產生激勵與肯定,帶來十分美妙的滿足感。

總有一天你會意識到之前忍受的所有困難都是值得的。因為你將要成為一名光榮的程序員,你也清楚作為JavaScript開發者,你的前途一片光明。就像在你之前成千上萬的程序員一樣,你打敗了最難的bug,你沒有退步,你沒有放手,你沒有找任何借口讓自己放棄。

當你學有所成的時候,放心的將你的成果分享給我們吧,哪怕是個微不足道的,小到顯微鏡都看不到的小項目。 ;D

來自: http://blog.enqoo.com/blog/2014/10/23/how-to-learn-javascript/


首先 不要為自己什麼都不懂就自我懷疑

因為這樣會帶來其實根本不需要存在的焦慮

焦慮讓人失去耐心 沒有耐心看文檔就黃了

再就是誠實 承認自己的水平 承認別人的優秀 當然這其中包含判斷力

人都是一張白紙 會犯錯誤

從錯誤中總結 讓人學會聰明

每天學到多少都是寶貴的

一開始可能沒有耐心 但要相信時間的積累力量 當你hold住自己 真正學了進去 進入了前端的美妙世界 你就贏得編程快感 贏得了興趣 耐心自然也就更多了

如果東西太多雜且亂 恭喜恭喜 這代表了你的選擇範圍很廣 任你挑 任你選

選擇能讓自己心動的 喜歡的 是一種選擇方式

看清了自己的現狀 看清了什麼對自己是最重要的 有能力為自己的選擇付出努力 自然就不浮躁了


原生的沒學好怎麼學好框架啊,

你是為了技術變好才去學框架,

那就先去看原生js,

不然只是會用框架不理解原理的碼農。


推薦閱讀:

為什麼一些公司招前端不想要培訓班出來的人?
Sea.js作者發布微博:
應該給 Sea.js 和 KISSY 也樹一塊墓碑了。
為啥啊?過時了嗎?

TAG:前端開發 | JavaScript | HTML5 | SeaJS | AngularJS |