javascript
[译] 原生 JavaScript 值得学习吗?答案是肯定的
- 原文地址:Is Vanilla JavaScript worth learning? Absolutely.
- 原文作者:David Kopal
- 譯文出自:掘金翻譯計劃
- 本文永久鏈接:github.com/xitu/gold-m…
- 譯者:lampui
- 校對者:kyrieliu、Calpa Liu
這篇文章的意圖是要給每位前端開發者強調 JavaScript 的基本原理。原生(Vanilla)是指沒有額外框架或庫的 JavaScript。本文將會告訴你為什么應該對原生 JavaScript 有一個較好的認識。
我也會提及一些幫助過我學習這些基本原理的資源。
寫這篇文章背后的另一個原因是許多有抱負的 web 開發者傾向于跳過 JavaScript 核心概念的學習,諸如提升、閉包或原型。他(她)們直接學習最熱門的框架,例如 React 或 Angular 2。我會向你說明為什么這種方法不能稱之為一條捷徑。
每個人都想要有 ${請填寫熱門的框架名字} 知識的開發者…
那么,還有什么理由讓你再費事去學習原生 JavaScript 嗎?
不了解一門語言本身的核心知識那是很難成為一名大神的,就像在你去一個有特定法律的領域之前,你需要先清楚法律的一些基本原則。這個比喻真的很巧。?
我能理解大多數熱血十足的 web 開發者想盡快地找到工作的心情。因為我也想。
看起來去上一門 JavaScript 基礎速成班、鉆研一些框架、開發個 ToDo 列表(let a puppy die)和上傳到 GitHub,然后再開始找工作會簡單些。
…但從長遠來看,把時間投入到原生 JavaScript 的學習會更有收獲
別誤會我,無論如何我都不是對 JavaScript 的各種框架有偏見。恰好相反,許多框架反而能讓你書寫出可讀性和維護性更高的代碼,這些框架還能讓你寫出比平時更容易調試的抽象代碼。
但 JavaScript 生態進化得非常快,新框架層出不窮,新功能不斷地被添加到已有的功能上,最重要的是,眼下許多熱門的框架遲早都會被替代,例如 Angular 1。
在這樣的環境下,你還認為具備某個 JavaScript 框架的知識對一名 web 開發者來說就足夠了嗎?
還是去理解這門語言是如何在這些框架和庫的背后運作好點?
Yes, 你對了!當然是第二個選擇。
如果你有一個很扎實的 JavaScript 基礎,當開始工作的時候唯一需要讓自己熟悉的就是新框架的語法,在所有層次的抽象下,基本的規則還是一樣的,它還是純粹的 JavaScript。
如果你的知識僅限于某個 JavaScript 框架,那你學習另一個新框架的時候會很艱難。不同的框架通常是基于不同的 JavaScript 原則。從長遠來看,你會花跟多時間去理解不同的框架和調試你寫的代碼。
所有的 JavaScript 框架和庫都不可避免地基于原生 JavaScript。
從長遠來看,這應該能說服任何人掌握原生 JavaScript 是必須的。這是對任何一名成功開發者的必要條件,特別是對于一個主要工作在 JavaScript 生態下的開發者。
個人經驗
不久前,我回顧了自己是怎樣從一名律師轉變為一名 web 開發者的過程,從我開始寫第一個 JavaScript 函數算起,都有 18 個月了,并且現在是我成為專業前端開發者的第 10 個月了。
我依然記得摸索正確的 JavaScript 學習之路對我來說是多么地有挑戰性,因為我之前沒有任何的編程經驗。我嘗試過(至今還在嘗試)許多不同的方法成為一名高效的學習者,有些方法會讓我收獲很多,有些卻較少。
最重要的是,開始的時候我把重點放在了學習原生 JavaScript 上面,這對我的幫助太不可思議了。接下來是框架。
picture credit
現在,我在工作中用的是 React-Redux 技術棧。即便如此,我經常能用原生 JavaScript 的知識解決眼下的一些問題。如果只具備某個框架的知識,這些 bugs 解決起來將會更具挑戰性。
學習 React 或 Angular 2 不會教你對象是通過引用傳遞或閉包是怎樣工作的。在更加抽象的框架下,嘗試去理解這些概念那就更加困難了。這就使簡單的 JavaScript 概念變得更難以理解。
此外,如果你工作中用的是 JSX (React, Vue, Inferno) 或 TypeScript (Angular 2),那你還有另一層的抽象層。
如果你想明白這些框架背后是怎樣工作的,你需要先明白 JavaScript 本身是怎樣工作的。
你可以通過閱讀自己喜歡的框架的源代碼考考自己對原生 JavaScript 的認識。這樣不僅能夠呈現一副這些框架背后工作的畫面給你,同時也能教會你許多邏輯,順便還可以用到工作中。你會看到框架里的函數貌似在你的應用中施了很多魔法,但其實這只是一些 JavaScript 基本概念的組合。
給我一些可以去學習的東西
你現在可能會問“哪些是能夠幫助我學習原生 JavaScript 知識的好資源?”。
現在已經有太多關于 JavaScript 及其框架的課程和書籍。但只有少數是全面地教你理解原生 JavaScript 的,大多數還是專注于某個具體的 JavaScript 技術。
但依然還是存在好資源的…
《JavaScript 編程精解》不僅會教你基本的 JavaScript,同時也會教你廣泛適用的編程技巧。如果你已經是一名高級開發者,這本書會向你提供一個關于 JavaScript 和它的核心原則的新視角。
另外一個非常不錯的資源是 Kyle Simpson 寫的《你不知道的 JavaScript》。Kyle 真的知道如何去施教,關于高級的 JavaScript 概念對初學者解釋得很友好,并且他將它們涵蓋的很深。僅僅是這幾本書的標題就已經告訴你要去學習什么,“Up & Going”、“Scope & Closures”、“this & Object Prototypes”、“Types & Grammar”、“Async & Performance”、“ES6 & Beyond”。現在已經有第七冊書,名字叫 JavaScript 中的函數式編程。
《JavaScript 編程精解》和《你不知道的 JavaScript》這兩套書共同的好處就是你都可以免費獲得(查看給出的鏈接)。但如果你發現它們對你很有幫助,別忘記通過購買它們以對作者表示支持。
如果你更傾向于看視頻學習,你可以觀看 Kyle 的在線課,我覺得最好把看視頻作為是看書的輔助學習,因為這些主題都是一樣的。當然啦,這些課程都是免費的。
另一個我覺得有幫助的視頻教程是 Anthony Alicea 的 Javascript: Understanding the Weird Parts。這個教程以循序漸進的方式解釋了 JavaScript 背后發生的事,同時這門教程涵蓋了諸如原型繼承、函數式編程和作用域鏈的高級概念。
馬上學習原生 JavaScript 吧
如果你之前投入過時間學習原生 JavaScript,那你肯定不會后悔。不僅僅是因為原生,同時也是因為這會對你日后的編程技巧有好的影響。
對我來說,最好的權衡是相對于花時間學習一門指定的框架,學習原生 JavaScript 會在未來帶給你更多好處。框架只是捷徑,背后其實都是 JavaScript。
當你用上某個框架,并在某個地方出現異常時你就會明白了,在這種情況下,你會被迫通過瀏覽源代碼去調查這個 bug。我是不是提到過,雖然許多框架欠缺得體的文檔,但它們卻有復雜的代碼?但是,小菜一碟,對嗎?你肯定已經花了很多時間學習原生 JavaScript 了?還是沒有?
從這篇文章中你應該記住一件事:
牢牢記住原生 JavaScript 會幫助你成為一名更好的開發者。完
如果你喜歡這篇文章,鼓個掌吧,我會很感激你的。
Twitter 見 ?
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、React、前端、后端、產品、設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的[译] 原生 JavaScript 值得学习吗?答案是肯定的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2010 关于.wav音频文件播放
- 下一篇: IBM致梁允超:乘着新技术东风 SaaS