致程序員:別無謂焦慮,快學習現代 JavaScript 生態體系

編者按:JavaScript 是前端開發的統治性語言。但是這門語言的多變和生態體系之複雜讓人又愛又恨,哪怕是接觸了很久的人。作為開發者指南的撰寫者,Flavio Copes告訴你對待JavaScript的正確態度應該是什麼樣的。

直到一個月前我甚至還沒法克服看一眼JavaScript就會產生焦慮感。我100%屬於所謂的JavaScript疲勞症,一直都沒法擺脫。這種情況已經持續好幾年了。

不過,今天我已經愛上了JavaScript和它的生態體系。

這是怎麼做到的呢?

其實我早在1990年代就一直以這樣或那樣的方式在使用着JavaScript,而且我的書架上還有好幾本書,裡面的內容今天看起來非常有趣,充斥着document.write這樣的語句。

最近幾年JavaScript已經發生了巨大改變。一開始,我都沒有辦法弄清楚發生了什麼事情。我沒有辦法一下子接受那麼多的變化。JavaScript正在改變但我還在抵觸。我花費了很大精力去學好它,現在它卻變了。

有一篇很火的帖子叫做《給恐龍準備的現代JavaScript解析》,文後有一條評論我非常感同身受:「如果你不是從一開始接觸的話學習現代JavaScript會很艱難。」

要我說要是一開始就了解JavaScript的話(是的,我就是那麼老)會更加棘手

——Tim Tate

2012年,我很認真地研究了一下JavaScript和Node.js,我從來沒有經歷過變化幅度像ES6這麼大的語言。上一次大的改變還是在2009年的ES5了。ES6幾乎改變了一切。JavaScript的這種翻新是如此之大以至於每天你都要去查規範但其實又不知道他們是不是已經制訂了,你得盯住Twitter上的每個人看他們在談什麼,一不留神可能就會錯過下一個大東西。

Var被扔進了垃圾堆。

Function再也不存在了。

基於原型的繼承,這個東西要花很長一段時間才能學好,也不見了,隱藏在一堆一堆類的下面。

這些還只是表面。

構建一切

一個很大的變化是Building。

我們從一個非常簡單的東西,包括我們支持script標籤的JavaScript,變成有構建步驟,將我們的語言編譯成某個無法理解的大型文件這麼複雜的東西。對此我一開始是非常抗拒的,完全沒有辦法接受要編譯這件事情。

不過當Babel這個生力軍出現時,我一開始反抗得更加厲害,但最後我舉起了白旗,我投敵了。

我意識到Babel不是什麼引領未來的庫,沒有先進功能,而當那些先進功能登陸瀏覽器時我們會忘掉Babel的。不,Babel並沒有消失,在可預見的未來都會如此。

當ES2017完全登陸瀏覽器時,Babel會支持ES2018、ES2019等等。你沒法逃避。擁抱未來吧,Babel是你的朋友。

使用最簡單的替代

現如今工具是JavaScript最困難的部分之一。是,你可以學習Webpack的一切,但當你開始做的時候,你還是會無視一切使用像create-react-app、React Boilerplate這樣現成的解決方案,讓它們處理最細微的細節,你只用關心編碼就好。

不要從設置環境開始,學會使用Glitch:探索現代JavaScript沒有更比這更簡單的東西了。

不再有大型的發佈

ES6太大了,大到ECMAScript委員會都決定下次發佈要小一點。這也是ES6被稱為ES205的原因,並且也是那一年的第一個發佈——從現在起每年我們都會有一場發佈。跟上形勢變得更簡單了,因為時間的限制,新版本的變化變少了,也更加可預測了(投降吧,變化總會有的)。

無視虛火

如果你跟我一樣,你也許會關注Twitter上面很多引領潮流的人。也許是一些指點下一個大事物是什麼的思想領袖。他們說要用X,其他人就都用X了。

也許他們喜歡用離標準很遠的最新API來展示自己的代碼片段,可這個其實在瀏覽器裡面用一個flag就能實現。

他們也許有很好的理由。但你沒有。不要掉進新的花哨玩意兒的陷阱,專註於你的工作。

不會每周都會冒出新框架

有個玩笑說的是「本月的JavaScript框架的口味是什麼樣的」或者「每周都會有一個新的庫」。真的,有很多人在做住JavaScript的東西,這很好,它帶來了創新和演變,JavaScript過去幾年所經歷的東西對於該語言生態體系意義重大。

但是需要注意的是大的東西變動不是很大。

React已經5歲了。

Vue也有4歲了。

4年的時間在技術業已經是很長的了。那些都屬於穩定技術了。現在就學習它們吧,它們也會存在很長一段時間的——不會那麼快消失的。

你有很多時間成為其中任意一種框架的專家,它們在短時間內是不會消失的。

接受有起有落的事實

話雖如此,任何東西都有生命周期。

幾年前到處都用jQuery,現在新項目已經很少碰這個了。

2013年時 Backbone.js發展得很大。現在它已經在地圖上消失了。

CoffeeScript已經從地球表面抹去。

Ember.js、Angular.js和Meteor火了好幾年,但現在大家討論最多的似乎是React、Vue和Angular(這個跟Angular.js不一樣)。

這些主流框架的每個周期通常都會持續好幾年。我仍然有很多Ember.js應用跑得不錯,如果他們還能做好自己的工作的話就沒有升級的必要,我也不打算去碰它們。

技術會慢慢演變和成熟,然後大家會使用而不是討論它們。

用jQuery並不蠢

一些人不敏感,不過如果你看的東西足夠多的話,你會發現有些人會鄙視一度人人都使用的技術——既然他們了解的東西更多,他們想要告訴你你是錯的。

我用PHP已經有很長一段時間,對此早已習以為常,流行的東西有人質疑很正常。即便是Go這門語言,其出色的簡潔性有時候也會為人所詬病。你總會見到有人對某個東西嗤之以鼻。

舉個例子,Pieter Levels用一個PHP文件建設了一家大型的獨立企業。看看那些評論是怎麼說的吧。

但作為初學者你也許會碰到有人告訴你你選擇了一門老技術,說現在已經沒人用了,你應該用React才對。

別理他們,把他們從你腦子裡趕走。

記住:如果這東西對你有效,那就是合適的技術棧。

如果這東西對你有效,那就是合適的技術棧。

大多數時候那些技術都是技術巨頭開發的,其需求跟你的或者你的小團隊的需求完全是不一樣的。用你了解的東西去做,你未必需要用先進的技術才能做出不一樣的東西。

另一個極端是過度工程。不要因為顯得自己更聰明而使用某種技術。要學會什麼時候該用某個框架或者庫。

你沒有知道一切的義務。找到你的平衡。

儘管看你的Twitter似乎讓人覺得你是個無所不知的人,但沒人什麼都懂。一個人不可能學會前端開發的所有東西。你一輩子都學不完。絕對沒辦法保證你能學完。

選擇文檔對用戶友好的技術

React和Vue正好文檔都很出色並不是偶然的。

這是它們能取得成功的關鍵部分。

JavaScript還會再變

去年ECMAScript語言引進了await/async ,現在這一功能已經被使用得很多了。基於promise的代碼看起來很糟糕,你會感受到重寫一切的緊迫性。

別這麼做,相反,要把新功能用到你編寫的新代碼上。

今年也會發生同樣的事情,發生在ES2018身上。每個人都會指指點點,然後回去繼續工作,然後我們又會開始討論ES2019的功能。

擁抱變化。這要比把賭注押在一個已經停滯不前,不出幾年就會變得無關緊要的技術上面好得多:JavaScript堅挺得很!

學習基礎的東西,然後選擇你的旅程

在Web平台上往往開發需要你不斷去學習新東西,哪怕只是想找出它能做什麼也需要。

有時候你只需要學習其中的20%就足以應付80%的事情而不需要鑽研那些邊緣情況。

旅程才剛剛開始

相對於其他語言來說JavaScript還非常年輕,最近幾年它非常流行並且能夠做出極大改變。它每天都能吸引和很多新的天才的開發者加入進來,未來10到20年我們會用什麼樣的JavaScript寫代碼呢?這事兒想想就挺讓人激動的。

原文鏈接:https://hackernoon.com/how-i-stopped-worrying-and-learned-to-love-the-javascript-ecosystem-692c51030342

編譯組出品。編輯:郝鵬程。



想在手機閱讀更多Javascript資訊?下載【香港矽谷】Android應用
分享到Facebook
技術平台: Nasthon Systems