解決 JavaScript 疲勞的旅程
直到幾個月前,我一看到 JavaScript 就會感到焦慮不安。
我完全受困於所謂的 JavaScript 疲勞中,無法擺脫它。
這種情況持續了好幾年。
今天,我喜歡 JavaScript 及其生態系統。
這是怎麼發生的呢?
我從九十年代就開始以某種形式使用 JavaScript,而現在我架上有一些書,看起來在今天顯得非常有趣,書中滿滿的 document.write
陳述。
大概是在 2012-2013 年間,關於 ES6 將會帶來的巨大變化的消息在各處都跳著。
起初,我無法掌握所有事情的進展。我無法一次接受這麼多變化。JavaScript 改變了,但我表示抗拒。學好它已經費了我很多時間,而它卻在我腳下改變。
我在一篇博文的評論中看到一個真實的 點子,它表示“如果你從一開始就一直在這裡的話(對,我就是那個老人),學習現代 JavaScript 會更加困難”:
我會認為,以前(對,我就是那麼老)在那裡是更加困難的 - Tim Tate
我在 2012 年正式開始深入研究 JavaScript 和 Node.js,之前從未經歷過像 ES6 這樣的語言變革。此前一個重大變化發生在 2009 年的 ES5。ES6 徹底改變了一切。它是 JavaScript 的一次巨大改進,每天你都會遇到很多可能出現在 ES6 規範中的新功能,但你真的不知道它們是否真的會包含進去,需要每天跟上進度,其他人在推特上都在談論這些也許會成為下一個大事的東西。
var
被抛棄了。
function
不再存在。
花了很長時間才學會的原型繼承,被類(class)的奧妙所覆蓋。
這只是冰山一角。整個 JavaScript 生態系統在過去幾年中發生了巨大變化。
建置一切事物
正在發生的一個重大轉變是"建置"。
我們從一個非常簡單的東西(使用 script 標籤引入 JavaScript)發展到需要構建步驟將我們的語言編譯到某個難以理解的巨大文件中。起初我強烈抵抗,我站在我的塔樓上,拿著大砲抵抗建置的部隊。
但當 Babel 軍力出現時,我起初更加抵抗,但最終我舉起了白旗,並加入了敵人。
我意識到 Babel 不僅僅是一個引入未來、邊緣功能的時髦庫,而是在未來可以使用作為 ES2017 的工具,同樣地適用於 ES2018、ES2019 等。無路可逃。擁抱未來,Babel 是你的朋友。
使用最簡單的替代方案
現今 JavaScript 的工具是最難的一部分。是的,你可以學習有關 Webpack 的一切,但當你剛開始時,忽略一切,使用現成的解決方案,如 create-react-app,React Boilerplate 將為你隱藏微小的細節,讓你專注於編寫代碼。
不要從設定環境開始,通過使用 Glitch 進行學習。沒有比這更簡單的方式深入研究現代 JavaScript 了。
不存在巨大的發布
ES6 如此之大,以至於 ECMAScript 委員會決定後續進行小型發布。這就是為什麼 ES6 也被稱為 ES2015,這是第一個具有年份的發布版本- 以後我們將每年發布一個版本。這使得跟上變化更容易,隨著增加功能的時間有限,變化也更少,而且可预测(但請注意,將會有變化)。
忽略熱潮
如果你像我一樣,可能會在 Twitter 上關注很多總是走在最前沿的人。或許有些是思想領袖,他們會指定下一個大事是什麼。他們說要使用 X,其他人都在使用 X。
也許他們喜歡展示自己使用最新的 API 的片段,這些 API 甚至還不成為標準,但可以在有相應選項的瀏覽器中使用。
他們可能有充分的理由。而你沒有。不要陷入新奇玩具的陷阱,專注於自己的工作。
每個星期都不會有新的框架
有一個笑話說:“每個月都有不同的 JavaScript 框架口味”或者“每週都會有新的庫”。這是真的,有數不清的人在使用 JavaScript,這很好,這帶來了創新和進化,JavaScript 生態系統在過去幾年中經歷了巨大變革。
但要注意的是,大事不會經常變化。
React 已經有 6 年的歷史了。
Vue 已經有 5 年的歷史了。
5 年對於技術來說是非常長的時間。這些都是穩定的技術。現在學習它們,它們會長時間存在,它們不會消失。
你有很多時間成為這些框架的專家,它們不會很快消失。
接受事物會來便會去
話雖如此,任何事物都有一個生命週期。
幾年前,jQuery 到處都在被使用,現在很少有新項目使用它。
2013 年時 Backbone.js 很火,現在它已經從地圖上消失了。
CoffeeScript 已經被徹底淘汰了。
Ember.js、Angular.js 和 Meteor 在流行一段時間後仍然居於頂端,現在最受關注的似乎是 React、Vue 和 Angular(與 Angular.js 不同)。
這些主要框架的每個週期通常持續很多年。我仍然有很多運行正常的 Ember.js 應用程序,如果它們能正常工作,就沒有必要更新它們,我也不打算碰它們。
技術不斷演進和成熟,然後被使用而不是談論。
使用 jQuery 不代表你愚蠢
有的人會比較堅強。但如果你讀得夠多,你會發現有些人厭惡大家曾經使用的技術,並告訴你你錯了。😆
作為一個長時間使用 PHP 的人,我已經習慣了這點,對於一些受歡迎的東西,人們批評是正常的。即使是 Go(以其簡單性而令人驚嘆)也有時會因此受到批評。總會有人評價某物不好。
舉個例子,我必須提到這條 Pieter Levels 的推特,他用一個 PHP 文件建立了一個巨大的獨立業務。
但作為一個初學者,你可能會遇到一些人說你選擇了一個老技術,沒有人再使用它,你應該使用 React。忽略他們,把他們排除在腦外。
記住:
如果對你有用,那就是正確的技術堆疊。
大部分技術都是由具有完全不同需求的大型公司構建的,而不同於你或你的小團隊的需求。根據自己的知識做出改變,即使不使用尖端技術,也能帶來不同。
現在,你可能不需要 jQuery。但不要用它來取代框架- 純粹的 JavaScript 很好。
另一個極端是過度工程化。不要只是為了顯得更聰明而使用技術。更好地了解它。學會在何時使用能幫助你的框架或庫。
你沒有義務知道一切。找到自己的平衡點。
儘管從你的 Twitter 看來,沒有人知道所有事情。沒有人能夠學習所有前端開發中正在進行的事情。這是一所終身學校。根本無法畢業。
選擇使用有用戶友好文檔的技術
React 和 Vue 之所以成功,不僅是偶然。它們有很棒的文檔。
JavaScript 將再次發展
去年,ECMAScript 語言引入了 await/async,現在這種語言特性被廣泛使用。基於 Promise 的代碼看起來簡直很差,你會有重寫所有東西的衝動。
不要這麼做,而是使用新特性來編寫新代碼。今年也將發生同樣的情況,即 ES2018。每個人都會對它們進行一段時間的討論,然後我們會回到工作中,開始討論 ES2019 的功能。
擁抱變革。它比押注停滯不前並幾年後變得無關緊要的技術要好得多:JavaScript 將會留存下去!
學習基本基礎知識,並選擇自己的旅程
在網際網路平台上進行開發需要承諾經常學習新東西,即使只是為了找出可行方案。
有時候,在 20% 的時間內學習 80% 的東西就足夠了,不需要深入研究邊緣案例。
旅程剛剛開始
與其他語言相比,JavaScript 仍然非常年輕,它非常受歡迎,並且在過去幾年中發生了巨大的變革。它每天吸引很多有才華的新開發人員,人們想到 10 或 20 年後我們將編寫的 JavaScript 是多麼迷人。