如何才能系統(tǒng)有效的學(xué)習(xí)javascript
如何才能系統(tǒng)有效的學(xué)習(xí)javascript
你可曾想過去學(xué)習(xí)JavaScript?它是目前世界上最好和應(yīng)用最廣泛的編程語言之一。想要學(xué)習(xí)的話,一起來看看以下文章吧。以下是學(xué)習(xí)啦小編分享給大家的學(xué)習(xí)javascript的方法的資料,希望可以幫到你!
學(xué)習(xí)javascript的方法
No1:大量閱讀
我是一個(gè)勁頭十足的讀者。所以,我的第一個(gè)關(guān)于學(xué)習(xí)JavaScript的技巧就是關(guān)于閱讀,這絕不是巧合。書籍和其他的資源(如文章)可以在很大程度上幫助你學(xué)習(xí)JavaScript。通過實(shí)踐學(xué)習(xí),書籍是我學(xué)習(xí)新學(xué)科最喜歡的方式。在學(xué)習(xí)JavaScript的情況下,我將會(huì)向所有人推薦兩本書。第一本是 Nicolas C. Zackas的《JavaScript高級(jí)程序設(shè)計(jì)》。這本書將會(huì)帶領(lǐng)你從JavaScript基礎(chǔ)到最高級(jí)的主題。當(dāng)你看完這本書,并且練習(xí)你所學(xué)過的知識(shí)點(diǎn)時(shí),你將會(huì)掌握扎實(shí)的JavaScript知識(shí)。如果你掌握了這本書里面的所有知識(shí)點(diǎn),我相信它會(huì)讓你離成為一個(gè)JavaScript專家更近一步。不過,這本書還不夠。不要誤會(huì),這本書是很好而且包含了很多內(nèi)容。問題就在于由于ECMAScript6的介紹很多都改變了。
這本書涵蓋了之前版本的JavaScript,所以,如果你只看《JavaScript高級(jí)程序設(shè)計(jì)》,你可以學(xué)習(xí)JavaScript,但是你不能學(xué)到最新的JavaScript特性。這就是為什么會(huì)有第二本書。這本書是出自同一個(gè)作者的《了解ECMAScript》本書包含了有關(guān)JavaScript的前沿信息。閱讀這本書,ECMAScript 6 將不再是你的問題。不過這有一個(gè)忠告,不要在閱讀Web開發(fā)人員專業(yè)的JavaScript書籍之前閱讀它。
理解ECMAScript會(huì)教你ECMAScript6的特點(diǎn)。但是你不會(huì)學(xué)到JavaScript基礎(chǔ)。這就是你必須在理解ECMAScript之前先閱讀Web開發(fā)人員專業(yè)的JavaScript書籍的原因。第二本書是建立在第一本書的基礎(chǔ)上的。除了這兩本書你還應(yīng)該閱讀關(guān)于JavaScript的文章和帖子。讓你自己沉浸在JavaScript中。
No2: 親歷親為(勤動(dòng)手)
眾所周知,只閱讀遠(yuǎn)遠(yuǎn)不夠。此外,這也不是最好的記住新知識(shí)的方法。你不信?想一想你昨天所閱讀的所有東西。你能記得多少?你還能記得多少事實(shí)和數(shù)字?你可能記得你所閱讀過得文章的題目,你還可能大概記得那些文章談?wù)摰氖鞘裁?。但是,如果有人給你做一個(gè)測試去測試一些明確的事實(shí)和數(shù)字,你可能會(huì)失敗。
毋庸置疑的事實(shí)就是你只閱讀了這些文章一次。當(dāng)你帶著學(xué)習(xí)的目的去閱讀的時(shí)候,你不止只看一次。你將會(huì)反復(fù)的閱讀知道你記住為止。不過,我會(huì)認(rèn)為閱讀不是最有效的學(xué)習(xí)方式。無論你想要學(xué)JavaScript或者其他任何東西,都有很多更有效的方法讓你去完成。這就是通過實(shí)踐去學(xué)習(xí)。學(xué)習(xí)代碼的最好的方法就是去編寫代碼。
我知道這聽起來簡單也相當(dāng)合理。但是,通常我們更喜歡閱讀而不是去實(shí)踐。其中有一個(gè)原因可能是閱讀更容易更舒適。而且,既然我們尋求舒適,那么閱讀這些東西看起來是一個(gè)更好的選擇。并不是!如果你想要學(xué)習(xí)JavaScript,而且是在短時(shí)間內(nèi),你必須親歷親為勤動(dòng)手,這是宜早不宜遲的。
通過實(shí)踐來學(xué)習(xí)的好處
正如我所提到的,你練習(xí)你所學(xué)的你會(huì)學(xué)得更快。你會(huì)得到即時(shí)的反饋,看看有什么作用。這是書本所無法復(fù)制的東西,包括電子版的。當(dāng)你下定決心通過閱讀來學(xué)習(xí)JavaScript的時(shí)候,你必須相信書本里的結(jié)果。這些結(jié)果通常是對(duì)的。但是,仍然可能會(huì)發(fā)生某些代碼段可能會(huì)產(chǎn)生不同的結(jié)果。特別是如果書中的一些語法已經(jīng)過時(shí)了,在這種情況下,一些代碼可能就不會(huì)運(yùn)行。
事實(shí)就是編寫和出版一本書籍需要花費(fèi)時(shí)間。所以當(dāng)這本書最后出版的時(shí)候,編程語言已經(jīng)包含了不包含在本書中的更新,這不足為奇。因此,你正在學(xué)習(xí)可能已經(jīng)過時(shí)的定西。如果你專注于練習(xí),這就不太可能發(fā)生。如果你在學(xué)習(xí)JavaScript的時(shí)候使用一些在線編輯器(如CodePen),你總是會(huì)使用這種語言的最新版本。JavaScript是一個(gè)很好的例子。
很長一段時(shí)間,并沒有關(guān)于ECMAScript 6 的書籍。但是,如果您使用Babel等編譯器,則可以使用此語法編寫代碼。在編程界,這相當(dāng)普遍。通常書籍在出版的時(shí)候就已經(jīng)過時(shí)了或者很快要過時(shí)了。留在技術(shù)前沿的唯一方法就是實(shí)踐。通過實(shí)踐學(xué)習(xí)JavaScript的另一個(gè)理由已經(jīng)提到了,就是能得到即時(shí)的反饋和更好的信息保留。
當(dāng)閱讀JavaScript可能是危險(xiǎn)的時(shí)候
這種反饋循環(huán)和改進(jìn)的保留是為什么即使是最新的書也不會(huì)是最好的選擇。此外,閱讀實(shí)際上可以讓你退步。當(dāng)你讀到一些的東西時(shí),很容易讓你說服自己你是在取得進(jìn)步。為什么會(huì)這樣呢?你正在瀏覽頁面并深入其中。然而,這只是你自己認(rèn)為的。如果有人給你測試怎么辦?你能像你翻頁那樣輕松的通過嗎?
在多數(shù)情況下,翻書比掌握書中包含的知識(shí)要容易得多。當(dāng)我決定主要通過閱讀書籍而忽視練習(xí)來學(xué)習(xí)JavaScript時(shí),我意識(shí)到了這一點(diǎn)。而且我很快意識(shí)到,過了一段時(shí)間后,我會(huì)忘記我之前閱讀的所有東西。因?yàn)楹芏鄸|西我只看了一次。所以,這是延長我學(xué)習(xí)JavaScript旅程的另一個(gè)因素。換句話說,我掌握的信息非常糟糕。而且,我也沒有得到反饋。
我曾經(jīng)認(rèn)為看書中的練習(xí)和親自動(dòng)手操作效果是一樣的,但是大錯(cuò)特錯(cuò)!你可以從早到晚用你的腦子寫代碼。然而,除非你測試,否則你永遠(yuǎn)都不會(huì)知道你的代碼是否有用。甚至連專家和有著多年經(jīng)驗(yàn)的人都不會(huì)依賴他們的想法和猜測。他們測試他們的想法。如果你真的想學(xué)習(xí)JavaScript我建議你也這樣做。
如果你不確定你該花多少時(shí)間去閱讀和練習(xí)該怎么辦?我的答案很簡單。通常在練習(xí)上花費(fèi)更多時(shí)間。如果你必須在閱讀一些東西和練習(xí)上選擇一個(gè),選擇后者。記住,閱讀某事物會(huì)讓你說服自己是在進(jìn)步。不要購買這個(gè)錯(cuò)覺。
No3:嘗試不同的學(xué)習(xí)方法
到目前為止,我們討論了學(xué)習(xí)可以通過閱讀或者實(shí)踐。這兩種方法足夠可以幫助你學(xué)習(xí)JavaScript。不過,你可以使用更多其他方法來提高你的學(xué)習(xí)能力。有一種理論是這樣說的,每個(gè)人都有不一樣的學(xué)習(xí)方式。對(duì)這個(gè)理論的合理性有一些批評(píng)和持續(xù)的爭論。誰知道呢,也許它只是起到安慰的作用。如果你想要,你可以嘗試不同的風(fēng)格,看看哪一種最適合你自己。
對(duì)于那些不相信學(xué)習(xí)風(fēng)格存在的人呢?我依然想鼓勵(lì)你們?nèi)L試不同的方式。我理解你們喜歡書籍勝過視頻?;蛘吣銈兿矚g自己嘗試,而不是閱讀它們。最后一個(gè)最適合我,書籍排第二。使用各種學(xué)習(xí)方式學(xué)習(xí)JavaScript的原因很簡單。你使用的方式越多,你就越沉浸其中。
多元的學(xué)習(xí)方法只為更深的沉浸在其中
然我們來談一談僅僅通過閱讀來學(xué)習(xí)JavaScript。這種方式有一個(gè)問題。你會(huì)經(jīng)常接觸不到JavaScript。與學(xué)科定期接觸是學(xué)習(xí)的關(guān)鍵。而且,接觸的越頻繁,你會(huì)學(xué)得越快。所以,如果你想更快的學(xué)習(xí)JavaScript,辦法就是勇往直前。你需要顯著的增加這個(gè)頻率。換句話說,你必須沉浸在其中。
這就是為什么你需要嘗試盡可能多的方式。你現(xiàn)在在讀一些關(guān)于JavaScript的好書嗎?這是一個(gè)好的開始!現(xiàn)在呢,怎么進(jìn)一步呢?舉個(gè)例子,你可以開始閱讀關(guān)于JavaScript的博客文章。由Eric Elliott領(lǐng)銜的“this blog”和“JavaScript Scene)是開始的好地方。你也可以開始聽關(guān)于JavaScript的播客。這里我向大家推薦兩個(gè):“JavaScript Jabber” 和 “JavaScriptAir”。
如果你更喜歡視頻而不是聲音該怎么辦呢?沒問題! JavaScriptAir 在 YouTube 上也有“its own channel”。另一個(gè)你可以學(xué)習(xí)JavaScript和其他關(guān)于網(wǎng)站開發(fā)技術(shù)的頻道是 “LearnCode.academy”。下一個(gè)專注于JavaScript的頻道是“JSConfEU”。如果你在尋找課程,使用搜索并選擇你喜歡的。有上百種頻道和視屏可以幫助你學(xué)習(xí)JavaScript。你也可以試試網(wǎng)頁,比如“Lynda” 和 “Udacity”。
有些人會(huì)忽略會(huì)談和博客,因?yàn)樗麄儾徽J(rèn)為這些是有用的。我不同意這個(gè)觀點(diǎn)。這些資源常常使人們從多年的實(shí)踐中學(xué)到很多洞察力和訣竅。此外,這些資源通常比課程和書本更通俗易懂和有趣。所以,你可以使用這些資源來放松,同時(shí)還能學(xué)到很多。
增加一些交互性
另一種快速學(xué)習(xí)JavaScript的方法就是加入一些網(wǎng)站的在線課程,例如“Codecademy”,“treehouse”和“Code School”。這些網(wǎng)站最大的進(jìn)步就是它們的交互性。首先,你看一些介紹的視頻。然后,你可以通過做一些練習(xí)立即練習(xí)你所學(xué)的內(nèi)容。這樣,當(dāng)這些知識(shí)還是比較新的時(shí)候,你可以練習(xí)你看到的所有知識(shí)。這種組合的學(xué)習(xí)方式也可以讓你獲得知識(shí)。
這些網(wǎng)站的缺點(diǎn)是它們通常只能在有限的時(shí)間內(nèi)自由使用。然后,你必須得支付一定數(shù)量的金額才可以訂閱。Codecademy是一個(gè)例外。你可以免費(fèi)在Codecsdemy上進(jìn)行培訓(xùn)、學(xué)習(xí)JavaScript和其他技術(shù)。你將無法獲得額外的資源和支持。另一個(gè)非常好的用于培訓(xùn)你的JavaScript技能的網(wǎng)站是“codewars”。在這里,你可以用通過解決各種難題挑戰(zhàn)自己。
盡管這可能不太適合所有的初學(xué)者,我認(rèn)為你至少應(yīng)該試一試。Codewars提供了很多要求JavaScript基礎(chǔ)的挑戰(zhàn)。所以,盡管你只是剛剛不如JavaScript的學(xué)習(xí)軌道,你也已經(jīng)可以測試你的技能了。我也應(yīng)該提到這些挑戰(zhàn)比僅僅關(guān)注一些學(xué)者或看視頻有趣得多。還有一件事,Codewars還提供可以與之交談的社區(qū)代碼愛好者。
JavaScript & DOM 基礎(chǔ)
在你找到JavaScript的工作之前,你需要掌握J(rèn)avaScript的基礎(chǔ):
固定方法: 標(biāo)準(zhǔn)數(shù)據(jù)類型的學(xué)習(xí)方法(特別是 數(shù)組, 對(duì)象, 字符串, 和數(shù)字)。
函數(shù) & 純函數(shù): 可能你覺得已經(jīng)很好地掌握了函數(shù),但是JavaScript經(jīng)常事與愿違,你需要學(xué)會(huì)純函數(shù)以掌握函數(shù)編程。
閉包: 學(xué)習(xí)JavaScript函數(shù)作用域是如何運(yùn)行的.
回調(diào): 回調(diào)是當(dāng)另一個(gè)函數(shù)運(yùn)行結(jié)束的時(shí)候,發(fā)出信號(hào)調(diào)用函數(shù)??梢赃@么說,“做你自己的事,做完了再叫我”。
Promises: promise是處理終值的方法。當(dāng)一個(gè)函數(shù)返回一個(gè)promise,你可以用.then()方法添加回調(diào),在promise完成之后運(yùn)行。終值會(huì)傳入你的回調(diào)函數(shù)中。比如 doSomething().then(value => console.log(value));。
Ajax & 服務(wù)器API調(diào)用: 大多數(shù)有趣的應(yīng)用最終都是聯(lián)網(wǎng)的。你需要知道如何與API交互。
ES6: 最新版本的JavaScript版本是ES2016 (或者是ES7),但是大多數(shù)開發(fā)者依然沒有掌握ES6。然而這已經(jīng)是過去時(shí)了。
類 (注意:避免類的繼承。 請看類的正確打開方式,然后晚上安心入眠。)
函數(shù)編程基礎(chǔ): 函數(shù)編程通過編譯數(shù)學(xué)函數(shù)創(chuàng)建程序,避免分享狀態(tài)和可變數(shù)據(jù)。我已經(jīng)好幾年沒有看到一個(gè)大量使用函數(shù)編程的JavaScript應(yīng)用作品。現(xiàn)在是時(shí)候掌握這個(gè)方法了。
生成器 和 異步/等待: 在我看來,寫異步代碼最好的方法是看上去是同步的。這里有一個(gè)學(xué)習(xí)曲線,但是一旦你學(xué)會(huì)了,那么代碼的閱讀會(huì)變得簡單。
性能: RAIL——從 “網(wǎng)頁響應(yīng)速度觀察”和 “WebPageTest.org”開始。
漸進(jìn)式Web應(yīng)用程序 (PWAs): 請看“原生應(yīng)用是必然的”和“為什么原生應(yīng)用是必然的”。
Node & Express: Node讓你在服務(wù)器上使用JavaScript,意味著你的用戶能夠在云中存儲(chǔ)數(shù)據(jù)然后在任何地方都可以使用它。Express是Node具有壓倒性優(yōu)勢的歡迎程度的框架。
Lodash: 一個(gè)極佳的用于JavaScript的,由函數(shù)編程模塊化功能打包而成的模塊化功能包。從lodash/fp從引入data-last函數(shù)模塊。
學(xué)習(xí)javascript的重要模塊
1) 可維護(hù)性: 通過定義可知, 一個(gè)模塊是獨(dú)立的。 一個(gè)設(shè)計(jì)良好的模塊目標(biāo)在于最大程度上減輕代碼庫之間的關(guān)聯(lián)性,這樣每個(gè)代碼庫都可以獨(dú)立地?cái)U(kuò)充和提高性能。更新一個(gè)單獨(dú)的模塊比依賴于其他代碼的模塊要輕松得多。
回到書的例子,如果你想更新你書中的一個(gè)章節(jié),如果對(duì)于一個(gè)章節(jié)的一個(gè)細(xì)小的改動(dòng)需要你同時(shí)改變每一章,那么這將會(huì)是噩夢。反之,你想用模塊的方法寫每一章節(jié),那么每次改動(dòng)都不會(huì)影響到其他章節(jié)。
2) 命名空間: 在javascript中,在最高權(quán)重方法范圍外的變量是全局(意思就是每個(gè)人都可以獲得他們)。正是這個(gè)原因,當(dāng)完全無關(guān)的代碼分享全局變量的時(shí)候,命名空間污染是很正常的事情。
在無關(guān)代碼中共享全局變量在開發(fā)中是一個(gè)很大的禁忌。
我們將在文章之后看到,模塊允許我們通過為我們的變量創(chuàng)建私有空間來防止命名空間污染。
3) 復(fù)用性: 讓我們在這里誠實(shí)點(diǎn): 我們會(huì)復(fù)制我們之前寫入新項(xiàng)目一個(gè)點(diǎn)或另一個(gè)點(diǎn)的代碼.比如,讓我想象你復(fù)制了一些你之前項(xiàng)目中使用的方法到你現(xiàn)在的項(xiàng)目。
這沒有問題,但是如果你發(fā)現(xiàn)一個(gè)更好的方法去寫那些代碼,你需要回顧并且記得更新任何你寫這個(gè)方法的地方。
猜你喜歡:
1.初學(xué)者學(xué)習(xí)javascript的方法有哪些
2.如何系統(tǒng)有效的學(xué)習(xí)歷史知識(shí)
3.如何系統(tǒng)有效的學(xué)習(xí)java me