JavaScript新的Babel版本借鑒F#和Julia編程語言中的干凈代碼功能
譯文【51CTO.com快譯】開發人員常常無法利用近年來為JavaScript語言添加的語法功能,這是由于要編寫必須在較舊的Web瀏覽器上運行的代碼。
這時候,像Babel這樣的轉譯器派得上用場。Babel可以將用最新版JavaScript編寫的代碼轉換成可在現有和老式瀏覽器中運行的舊版JavaScript代碼。
使用轉譯器讓開發人員可以充分利用較新的JavaScript功能,比如讓開發人員可以編寫更易讀的代碼,并使異步編程更容易。
本周發布了Babel 7.5,它在這方面邁出了另一步:為JavaScript添加支持F#和Julia編程語言的一項便利功能。
該版本經配置后可以識別F#管道運算符,該運算符由符號|>表示。
運算符提供了調用只有一個實參的函數的替代方法,比如說允許第2行的代碼寫成第3行的代碼。
- function repeat (str) { return str + ", " + str; }
- repeat("hello")
- "hello" |> repeat
該管道運算符讓開發人員在串聯多個函數時(一個函數的結果傳遞到下一個函數,依次類推),可以編寫更易讀的代碼。
假設你定義了下列函數,這些函數分別重復單詞、將單詞大寫以及添加感嘆號。
- function repeat (str) {
- return str + ", " + str;
- }
- function capitalize (str) {
- return str[0].toUpperCase() + str.substring(1);
- }
- function exclaim (str) {
- return str + '!';
- }
你可以用JavaScript串聯諸函數,無需使用管道運算符,方法如下:
- let result = exclaim(capitalize(repeat("hello")));
- result //=> "Hello, hello!"
這些函數使用管道運算符串聯起來,方法如下:
- let result = "hello"
- |> repeat
- |> capitalize
- |> exclaim;
- result //=> "Hello, hello!"
管道運算符仍處于提議階段,這意味著要將@babel/plugin-proposal-pipeline-operator添加到Babel配置文件中,才能在Babel中啟用它。
將運算符添加到Babel之前,目前管道運算符的五個變種正在評估中;除了現有的minimal變種和Smart變種外,Babel 7.5增添了支持運算符F#變種的功能。
F#管道運算符可以與帶多個實參的函數一起使用,只需將它與JavaScript的箭頭函數結合使用。在異步編程中使用await關鍵字時,箭頭函數也與F#管道運算符一起使用。你可以在此(https://github.com/tc39/proposal-pipeline-operator)閱讀有關管道運算符以及它如何與Babel一起使用的更多詳細信息。
Babel 7.5也不再需要依賴多個babel插件以便解析不同JavaScript模塊打包工具的動態導入,比如webpack和rollup。相反,開發人員現在只需將@babel/plugin-syntax-dynamic-import插件添加到Babel配置文件中。
Babel不僅可以從較新的JavaScript代碼來轉譯,還可以從JavaScript衍生語言TypeScript來轉譯。
這個最新的Babel版本還讓開發人員可以在其代碼中使用TypeScript的命名空間。命名空間讓開發人員可以告訴計算機將代碼拆分成更小的不同代碼塊,那樣他們可以更確信變量、函數和對象的名稱不會沖突。
可以通過在Babel的配置文件中加入以下內容,將支持命名空間的試驗性功能添加到Babel的TypeScript插件中。
- module.exports = {
- plugins: [
- ["@babel/plugin-transform-typescript", {
- allowNamespaces: true
- }]
- ]
- }
此處(https://github.com/babel/babel/releases/tag/v7.5.0)附有Babel 7.5版本的完整的其他功能和修復程序。
Babel被許多大公司使用,包括Facebook、Netflix、Cloudflare、PayPal和愛彼迎等。
原文標題:JavaScript borrows clean code feature from F# and Julia programming languages in new Babel release,作者:Nick Heath
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】