如何學習JavaScript,關於學習JavaScript的五條建議

2020-12-12 前端一零仙人

導航現代JavaScript的廣闊生態系統是一項艱巨的任務。有各種各樣的前端框架,少量的模塊捆綁程序和數千個實用程序庫,更不用說可以在你的計算機或伺服器上運行的所有Node.js模塊了。你怎麼知道從哪裡開始?你應該在哪些技術上花費時間?

我學到了無數的東西,但從未停止使用,還有其他一些我希望自己花更多時間在上面的東西。考慮到我7年職業生涯中的經驗教訓,這些是我對如何學習JavaScript的建議。

1.熟悉異步JavaScript。

如果查看JavaScript(或一般而言的Web開發)的歷史,就會發現異步JavaScript完全改變了遊戲。它允許網站從僅具有客戶端操作的靜態頁面到瀏覽器中功能全面的應用程式。實際上,發出HTTP請求並等待響應而無需重新加載頁面的能力改變了全球資訊網。

可以肯定地說,異步編程是Web開發的核心宗旨。那是你應該在早期學習JavaScript上投入大量時間的地方,因為它封裝了其他核心原則,例如回調,promise,異步/等待和獲取。

請花一些時間按順序閱讀我在下面列出的資源。他們應該給你一個從哪裡開始異步編程的好主意。

推薦資源:

視頻資料

對於零基礎小白來說看視頻就是最好的學習方式了,我在這裡為大家準備了一套,有需要的可以私聊獲取

看完視頻之後,推薦下面這本書,同意也給大家準備好了電子版

JavaScript異步編程

2.了解TypeScript的基礎。

我和我自己辯論了一個小時左右,以決定是否要包含此內容,因為這是一篇有關學習JavaScript的文章,而TypeScript不是JavaScript。它是它的超集,需要使用構建步驟。但是,我堅信TypeScript,以至於不得不將它包括在內。

該建議與JavaScript的關係比與最佳編碼實踐的關係少。JavaScript是一種鬆散類型的動態程式語言。當您傳遞沒有類型協定和不可變性的變量和數據對象時,編寫容易受副作用影響的代碼太容易了。TypeScript通過添加強類型輸入和創建只讀屬性的能力(在許多其他奇妙的事物中)來減輕這些問題。

考慮到這一點,我建議你儘快學習TypeScript的基礎。「基礎知識」的意思是:如何在變量,類屬性,函數參數和函數返回值中添加類型注釋。TypeScript功能非常強大,除了簡單的類型注釋之外,還有很多東西要學習,但是第一步將阻止您定期腳踏實地拍攝自己。它仍然讓我感到驚訝,TypeScript編譯器多久發現一次我最初沒有看到的錯誤。

是的,編譯器會大吼大叫……很多。沒關係!它是您的朋友,它希望您成為一個更好的程式設計師。花點時間考慮一下TypeScript給你的錯誤消息,我保證您的代碼將得到顯著改善。

推薦資源

從官方TypeScript文檔在5分鐘內輸入TypeScript在在線TypeScript REPL中玩轉[Paywalled] TypeScript 4小時研討會,作者:Mike North已準備離線版

3.了解為什麼存在JavaScript框架。

自從我在2012年末第一次涉足Web開發以來,JavaScript框架就已經存在。那時,AngularJS佔據了上風,Backbone.js擁有可觀的市場份額,而Ember則是炙手可熱的新興市場(雙關語意)。有趣的是,即使它們已成為過去(主要由React和Vue代替),這些前端框架解決的問題也沒有太大變化。例如:

數據綁定視圖到控制器。這是最重要的。保持UI視圖與前端應用程式狀態同步是所有前端框架的主要原因。無論框架是完全MVC,MVVM還是僅僅是視圖層,它們都可以將某些狀態綁定到視圖並使它們保持同步。可重用組件。這是AngularJS做對的最大事情。前端視圖的基於組件的組合,以及JS將模板編譯成HTML的功能,是React和Vue等現代框架的核心,但自AngularJS以來一直存在。如果不使用現有框架或創建自己的框架,則根本不可能創建動態的,可重用的組件,因為Web組件的API非常受限制,並且無法處理數據綁定。這些只是為了說出一對夫婦的名字。關鍵是,如果您看中精美的扳手,螺絲刀和其他工具,螺母和螺栓是相同的。工具的變化和技術的發展,但是,如果您了解Web開發的核心痛點(首先存在這些工具的原因),那麼您將處在一個更好的位置,以理解和正確使用任何現在,將來或舊有的東西框架。

推薦資源

文章:現代JavaScript框架存在的最深層次原因4.同時學習兩個相似的框架。

依我關於框架解決的基本問題的觀點並沒有改變,我現在建議你一次學習兩個前端框架。例如,Vue和React。

當大量使用一個框架時,很容易開始覺得該框架的語法和模式是基礎語言的一部分(在我們的例子中為JavaScript)。俗話說,如果你只有錘子,那麼一切都會看起來像釘子。那句話,翻譯成程序設計,意味著

一次學習或了解兩個框架可以顛覆這種想法,使你對框架實際為你做的事情有更多的了解。就像學習外語實際上可以使你的母語變得更好一樣。你會看到兩者之間的異同,並且你正在思考什麼語言結構導致了這些異同。知道兩個JavaScript框架可以提供相似的觀點。通過了解同一解決方案的兩條路徑,你可以更好地了解它們正在解決的根本問題。

5.揭開構建過程的神秘面紗。

我現在提出了4條建議,但其中只有一項涉及學習Vanilla JS,這對我來說並沒有丟失。無論你是否喜歡,編寫現代JavaScript都涉及許多工具和框架,而將它們聯繫在一起的就是構建過程

構建工具是我整個職業中變化最大的領域,因為這是性能和資產規模最大的收益。基於Web的公司和開放原始碼社區一直在努力地擠壓他們在構建過程中可能無法進行的每一個小改進,從而導致了工具和過程的不斷變化。

我不得不承認,花了我一段時間才了解Webpack之類的工具是如何工作的。你設置了一個簡單的配置,運行了一個命令,突然您有了一個包含優化,最小化和瀏覽器兼容代碼的文件。構建工具看起來像是不可思議的工具,因為它們都努力做到零配置或很少配置。這對於開始使用它們非常有用,但是當您實際需要進行一些自定義配置時,這會使他們望而卻步。

了解這些工具正在為您做什麼是非常重要的。嘗試了解您的代碼將經歷哪些轉換以及轉換的順序。嘗試了解如何捆綁模塊,以便更好地對其進行優化。嘗試學習每個配置選項,因為這對性能和文件大小影響最大。

推薦資源

深入探討webpack解決的問題Grunt和Gulp.js就是這樣!我希望這個職位能帶來可觀的價值。正如我在介紹中所述,JavaScript生態系統令人生畏。我已經從事專業工作7年了,但我仍然經常覺得自己幾乎沒有刮過表面。因此,不要嘗試一次全部使用-專注於這五件事,你會順利進行的。

本文的所有提到的知識點都為大家準備好了資料,可以私信獲取

相關焦點

  • 七天學會javascript第一天javascript介紹
    前幾周寫了幾篇關於入門php的文章,反響還不錯,之前簡單的提到了JavaScript,這周小編重點介紹JavaScript讓大家可以在一周時間內掌握這門前端語言的基本用法。javascript介紹javascript數據類型javascript運算符javascript對象javascript
  • 由淺入深學習JavaScript Debug技巧
    另外,本文版權歸原作者所有,翻譯僅用於學習。我常常看到不少開發者不懂如何Debug JavaScript代碼,因此決定寫一篇博客為初學者介紹如何Debug。我希望這篇文章可以提供一些有用的信息。我嘗試在本文講述很多內容,所以有些部分並沒有講得很細。在開始之前,做一些基本的準備:注意:1.
  • 如何正確學習JavaScript
    原文:http://javascriptissexy.com/how-to-learn-JavaScript-properly/翻譯:Jaward華仔目錄既然你找到這篇文章來總的來說,這種學習方法會讓人不知道如何將語言當做工具來使用——當做個人工具來用。另外,也許有人會建議從尊敬的JavaScript教父Douglas Crockford寫的《JavaScript語言精粹》開始學習JavaScript。
  • JavaScript 執行機制
    1.關於javascriptjavascript是一門單線程語言,在最新的HTML5中提出了Web-Worker,但javascript是單線程這一核心仍未改變。所以一切javascript版的"多線程"都是用單線程模擬出來的,一切javascript多線程都是紙老虎!
  • 原來Github上也有這麼多的JavaScript學習資源!
    mixin模式在JS中偽造類● 檢查JS的原型機制如何在對象之間形成連結Scope and Closures dives into trickier parts of the language● 了解Scope,深入理解JavaScript裡的域● 深入嵌套作用域,一系列變量和函數的容器● 了解如何使用閉包進行同步和異步任務
  • javascript如何執行調試
    javascript中執行調試的方法有:使用console.log()方法,或者使用關鍵字「debugger」。有時代碼可能會包含某些錯誤。而作為腳本語言,JavaScript無法在瀏覽器中顯示任何錯誤消息。但是,這些錯誤卻會影響輸出。
  • JavaScript是什麼
    面向過程的思想----C語言【指針】面向對象的思想就是只需要知道開始和結束位置就可以,至於中間是如何完成的不需要關注。開始和結束位置就是對象。面向對象的思想—java、 C#腳本—寫好的程序不需要中間轉換,就能立即在運行環境中運行。javaScript,SQL為html網頁提供動態效果【特效】。
  • javascript之常用數據類型及判斷方法
    前端工作者學習之路對於剛開始入門的前端人員來說,javascript中的數據類型是既熟悉又籠統的概念,不論在php,還是c語言抑或java,他們的數據類型都各不相同,大家也千萬不用混淆,今天,我們來具體重新了解下javascript中的常見數據類型以及他們的判斷方法。
  • Javascript 生成器
    在 javascript 中,如果想要使用生成器,則需要: 定義特殊的生成器函數 調用該函數創建一個生成器對象 在循環中使用該生成器對象,或直接調用其 方法 我們以下面這個簡單的程序做為起點,並執行以下每個步驟:
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    平時如何發現好的開源項目,可以看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源項目以下為【前端GitHub】的第 12 期精華內容。它不是必備,但在未來學習(JavaScript)中,可以作為一篇指南。
  • javascript流程語句
    小案例:輸入兩個數,然後交換這兩個數,再輸出他們交換後的結果<script type="text/javascript">var num1 = 20;var num2 = 10;var tmp =num1;num1 = num2;num2 = tmp;alert(
  • 這一次,徹底弄懂 JavaScript 執行機制
    我們真的要徹底弄明白javascript的執行機制了。1.關於javascriptjavascript是一門單線程語言,在最新的HTML5中提出了Web-Worker,但javascript是單線程這一核心仍未改變。
  • JavaScript 函數replace揭秘
    下面來幾個demo:"boy & girl".replace(/(\w+)\s*&\s*(\w+)/g,"$2 & $1") //girl & boy"boy".replace(/\w+/g,"$&-$&") // boy-boy"javascript".replace(/script/,"$& !
  • JavaScript 基礎語法
    ,以「實現頁面小功能」為目的,一步一步的進行實現,並在期間講解相關知識點,在其中一些相關的「細節」知識點我們暫時先忽略掉,先完成主幹的學習。在一個小階段的主幹知識學習完成之後,我們再回頭詳細分析「細節」。這樣更有利於大家的吸收和理解,不容易陷入到一些不必要的問題當中。
  • JavaScript為什麼這麼難?
    只有真正的javascript程式設計師才知道javascript太難了。其他程式設計師都覺得javascript是門玩具語言。javascript太難了。難點javascript的真值表,可以體驗一下。javascript使用一種非主流的對象機制,基於原型鏈的對象繼承機制。這需要我們拋棄很多語言的Class的思想。認真研究下這個原型鏈。
  • 網頁性能之html css javascript
    前言html css javascript可以算是前端必須掌握的東西了,但是我們的瀏覽器是怎樣解析這些東西的呢 我們如何處理html css javascript這些東西來讓我們的網頁更加合理,在我這裡做了一些實驗,總結起來給大家看看。
  • 9 個讓 JavaScript 調試更簡單的 Console 命令
    lt;html> <head>     <title>常用console命令</title>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>     <script type="text/javascript
  • 0基礎學習JavaScript一定要知道如何使用VS2019去編寫代碼
    </title> <script type="text/javascript"> document.write("你好!")JavaScript代碼的基本使用如下說明:一、代碼編寫位置<script type="text/javascript">----JavaScript代碼段</script&
  • javascript定時器
    在javascript中,定時器一共有兩個:setTimeout與setInterval例1:使用javascript彈出一個helloworld例2:過3秒後彈出一個helloworld3秒後彈出helloworld,只執行一次,默認情況下setTimeout
  • 最強大、最牛逼的javascript視頻免費發布啦
    是一門非常強大的腳本語言,應用的範圍非常廣泛,每一個web開發者學好javascript也是必須的,本套視頻教程詳細的講解了javascript各個知識點、關鍵點,其中涉及到高深的函數概念、原型概念、接口概念、單體概念、更是詳細的講解了javascript設計模式。 本