#每日一記# 3分鐘從 es6+ 編譯成 es5 的代碼里學習知識

每日一記 - 但并不日更

新系列導讀

學習編程語言是一件持之以恒的事情,從學會簡單的語法就能寫出程序,到理解類型和設計模式,再到考慮代碼的組織架構。誰不是從這樣一點點深入和積累的呢?入門總是輕松又令人愉悅的,但隨著知識點越來越多學習的曲線卻驟然陡峭。但隨著對語言的深入理解,再回頭來重新審閱基本的知識,又會有柳暗花明又一村的豁然感,「啊,原來是這樣的」那種感覺。

這個「3分鐘」系列將利用 babel 在線的實時編譯工具,來學習分析 es6+ 的部分特性。通過編譯后的 es5 代碼,我們可以從中了解到 es6+ 特性的實現細節,更好的掌握新特性的適用性。

作為系列的第一篇,先介紹這個 babel 在線實時編譯工具。

babel

「今天,使用下一代 Javascript 編程」,正如 babel 官網的標語,babel 正是為抹平 高速擴展的 JS 標準緩慢實現標準的瀏覽器 產生的鴻溝而出現的。babel 最大的功能就是將瀏覽器還未支持的語法編譯成低版本 js 語法,讓其能正常運行。

首先打開頁面 babel 在線實時編譯

界面

界面分為三大區域:設置區源碼區編譯區

設置區

主要進行編譯方式的設置和編譯環境的設置。

我們主要關心編譯環境(PRESETS) 的設置,比如你希望引入的環境編譯包(lib)。圖中所示的就是引入了 es2015stage-3 兩個編譯包,編譯器就會先對源碼進行 stage-3 的特性進行編譯,再對 es2015 的特性進行編譯。需要注意的是,如果只開啟 es2015 那么只會編譯 es2015 中新增的特性,更加新穎的特性就無法識別出來。

讓我們來舉個例子:箭頭函數是 es2015 的新特性,而算數運算符冪運算 **es2016 的新特性,那么在編譯環境里只選擇 es2015 會發生什么呢?

// v6.26.0
// presets: es2015
// 源碼區
let foo = {
    bar: () => {
        return true;
    },
  
    baz: 10 ** 2,
}

// 編譯區
"use strict";

var foo = {
  bar: function bar() { // 只有 es2015 的箭頭函數被編譯了 
    return true;
  },

  baz: 10 ** 2
};

如果在編譯環境里只選擇 es2016 會發生什么呢?

// v6.26.0
// presets: es2016
// 源碼區
let foo = {
    bar: () => {
        return true;
    },
  
    baz: 10 ** 2,
}

// 編譯區
let foo = {
  bar: () => {
    return true;
  },

  baz: Math.pow(10, 2) // 只有 es2016 的冪運算符被編譯了
};

所以如果想讓所有新特性都被編譯成 es5 那么最好同時選擇 es2015stage-3 兩個編譯包。

// v6.26.0
// presets: es2015 stage-3
// 源碼區
let foo = {
    bar: () => {
        return true;
    },
  
    baz: 10 ** 2,
}

// 編譯區
"use strict";

var foo = {
  bar: function bar() {
    return true;
  },

  baz: Math.pow(10, 2)
};

// 特性都被編譯了
源碼區和編譯區

在源碼區輸入代碼,在編譯區就能實時顯示編譯后的代碼。

示例解讀

在這個系列里的代碼示例,為了可讀性都不會使用截圖,而是用代碼編寫,在代碼頭部添加注釋以方便閱讀代碼的人知道代碼的編譯環境和編譯細節。

代碼會包含使用的編輯器版本

// v6.26.0

包含使用的編譯包

// es2016

結語

由于 ES 的新特性主要包含兩個方面,一個是對現有對象的擴展,比如 Object.assing();另一方面是對語法的擴展,比如新語法和語法糖。這個「3分鐘」 系列也將著重介紹對語法的擴展。

謝謝。

羅小黑寫寫文字

如果喜歡文章 請留下一個贊~
如果喜歡文章 分享給更多人~

掘金中關注我
簡書中關注我

自由轉載-非商用-非衍生-保持署名(創意共享3.0許可證
轉載時請保留原文鏈接 以保證可及時獲取對文章的訂正和修改

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容