開發者熱議:微軟新提議或將“徹底”改變 JavaScript 和 TypeScript!

MissD 發表於 2022-04-20
JavaScript 微軟

上個月,微軟剛宣佈支援了一項“關於進一步開發 JavaScript 和 TypeScript ”的提議,儘管這只是一個所謂的 0 階段提案,但微軟已宣佈希望按時向 TC39(技術委員會39)提交該提案。有業內開發者表示,如果這項提議被採納並將得到實施,那麼對於 JavaScript 和 TypeScript 來說將迎來一場鉅變。
(相關閱讀:https://segmentfault.com/a/11...

開發者熱議:微軟新提議或將“徹底”改變 JavaScript 和 TypeScript!

JavaScript 的 20 年奮進史

回顧過去的 20 年,如果比較一下現在和那時的 web 開發,我們就會發現,儘管JavaScript 作為一種程式語言已經發展了很多,但圍繞 JavaScript 的生態系統卻已取得了很大進步和發展。

究其原因,是由於:第一點,JavaScript 社群在過去 20 年裡變得更加專業;第二點,網際網路的一個基本問題變得越來越重要。以此同時,以上這兩點是相互需要的。

開發者熱議:微軟新提議或將“徹底”改變 JavaScript 和 TypeScript!

眾所周知,作為開發者,我們無法控制使用者將使用哪些瀏覽器。也就是說,使用者只有定期更新瀏覽器,才能使用 JavaScript 的最新功能。當然這也是對個人使用者情況的總結,因為現在很多瀏覽器都會自動更新,或者在未經詢問的情況下指示更新。

但對於公司而言,情況並非如此(或許由於企業對軟體和軟體更新有嚴格的規定)。許多公司經常會使用過時的軟體,或使用過時的瀏覽器上網,這也會影響 HTML 和 CSS,此外程式語言也必須由各自的瀏覽器進行解釋,因此具有很大的依賴性。

此時,作為一名 web 開發人員,我們將必須在兩種觀念之間做出選擇:要麼依賴於簡化程式設計或在可用性方面帶來更好結果的現代 JavaScript、CSS 或 HTML 功能,要麼因過時的瀏覽器而無法為所有人提供這些現代功能(升級可能會導致一定數量的使用者出現 bug)。

除此之外,幾十年來還沒有一個像樣的 JavaScript 模組系統。而 Node.js 通過 CommonJS 獲得了標準,但這僅限於伺服器。

大約十年前,瀏覽器中很長一段時間沒有發生任何事情,這就是為什麼 Bundler 與 transpiler 一同出現的原因。儘管您使用的是一種可以正常執行的 JIT(即時)編譯程式語言,但您始終需要處理一種複雜的構建過程,將原始碼轉換為實際程式碼,然後在瀏覽器中執行和解釋(這是大約十年前的情況)。

TypeScript 的崛起

十年前,微軟發明了 TypeScript。微軟認為“如果你在部署之前需要一個 transpiler 來轉換 JavaScript 程式碼,那麼在這個構建過程中增加一個步驟也不會有什麼大不了的”。

在這個過程中,開發者會得到一個能將現代 JavaScript 轉換成普通 JavaScript 的 transpiler。此外,TypeScript 是一個靜態型別系統,它使 JavaScript 更具可伸縮性,為團隊高效開發 JavaScript 做出了重要貢獻。

這也難怪 TypeScript 很快建立起來,並一舉成為當今企業 JavaScript 開發的標準。

開發者熱議:微軟新提議或將“徹底”改變 JavaScript 和 TypeScript!

十年後的今天,世界發生了變化。雖然那些不更新的瀏覽器現在還“活著”,但它們今天所扮演的角色比過去小得多。

所以,對於 Evergreen 這樣的瀏覽器而言,現在不使用 transpiler 也能工作,且有了 ESM(ECMAScript模組),還包括一個可在伺服器端和客戶端工作的基於 JavaScript 的本地模組系統。

這樣一來,bundler 就用不著了,至少從技術角度來看是這樣。bundler 只是優化 HTTP 請求的又一個步驟,這樣就可以從伺服器上載入更少的小檔案,只需載入幾個大檔案。與此同時,構建過程也將逐漸變得更簡單或更無關緊要。

目前,微軟預計未來唯一剩下的必要工具,就是 TypeScript 編譯器,因為 web 瀏覽器和其他 JavaScript 執行時環境根本無法理解 TypeScript。

也就是說,微軟或 TypeScript 突然從一個非常實用的工具變成了一個相當“煩人”的東西。對此,微軟表示他們不想成為阻礙,反之,他們想激勵開發者。

當然,這樣一來微軟也會有所擔心 —— JavaScript 開發遲早會像 20 年前一樣快速、直接、高效,因為如果不使用 TypeScript 的話,Transpiler 這些東西遲早要被淘汰掉。

目前,打消顧慮的一種方式是:要求在 web 瀏覽器和其他執行時環境中整合 TypeScript,以此來作為 JavaScript 的替代程式語言。理論上,這並不牽強。

此外,TypeScript 現在也成為了一種更加複雜的程式語言,微軟不希望將 TypeScript 編譯器的所有功能直接整合到常見的 web 瀏覽器中。這將是一項非常複雜的任務,需要蘋果、谷歌、Mozilla 等公司的合作,才能整合一個新的大標準。

當然,微軟應該不想那樣做,因此也就有了 3 月份的那份“關於進一步開發 JavaScript 和 TypeScript ”的新提議。

開發者熱議:微軟新提議或將“徹底”改變 JavaScript 和 TypeScript!

那麼,TypeScript 是否應該保持完全獨立,亦或者會變成“新的 JavaScript”呢?無論如何,我們或許會在接下來的幾年裡看到關於此次提議的發展。