Babel 轉(zhuǎn)碼器

babel 是一個(gè)廣泛使用的 ES6 轉(zhuǎn)碼器, 可以將 ES6 代碼轉(zhuǎn)為?ES5 代碼叙谨, 從而在老版本的瀏覽器執(zhí)行法严,你可以用 ES6 的方式編寫程序肥哎,又不用擔(dān)心現(xiàn)有環(huán)境是否支持。 下面是一個(gè)例子:


上面的原始代碼用了箭頭函數(shù)坐榆,Babel 將其轉(zhuǎn)為普通函數(shù)拴魄,就能在不支持箭頭函數(shù)的Javascript 環(huán)境執(zhí)行了。

下面的命令在項(xiàng)目目錄中,安裝 Babel匹中。


配置文件.babelrc

Babel 的配置文件事 .babelrc ,存放在項(xiàng)目的根目錄下夏漱。 使用Babel 的第一步,就是配置這個(gè)文件顶捷。

該文件用來設(shè)置轉(zhuǎn)碼規(guī)則和插件挂绰,基本格式如下:

presets 字段設(shè)定轉(zhuǎn)碼規(guī)則,官方提供以下的規(guī)則集服赎,你可以根據(jù)需要安裝葵蒂。

然后,將這些不規(guī)則加入? .babelrc 重虑。

注意践付,一下所有 Babel 工具和模塊的使用,都必須先寫好 .babelrc 嚎尤。


命令行轉(zhuǎn)碼

Babel 提供命令行工具 @babel/cli 荔仁,用于命令行轉(zhuǎn)碼。

它的安裝命令如下:

基本用法如下:


babel - node

@babel/node 模塊的 babel-node 命令芽死,提供一個(gè)支持 ES6 的 REPL 環(huán)境乏梁。它支持 NodeREPL 環(huán)境的所有功能,而且可以直接運(yùn)行ES6 代碼关贵。

首先遇骑,安裝這個(gè)模塊。

然后揖曾,執(zhí)行 babel-node 就進(jìn)入 REPL 環(huán)境落萎。

Babel-node 命令可以直接運(yùn)行 ES6 腳本,將上面的代碼放入腳本文件 es6.js 炭剪,然后直接運(yùn)行练链。


@babel/register 模塊

@babel/register 模塊改寫 require 命令,為它加上一個(gè)鉤子奴拦。此后媒鼓,沒當(dāng)使用 require 加載 .js / .jsx / .es.es6 后綴名的文件,就會先用 Babel 進(jìn)行轉(zhuǎn)碼错妖。

使用時(shí)绿鸣,必須首先加載 @babel/register

然后暂氯,就不需要手動對 index.js 轉(zhuǎn)碼了潮模。

需要注意的是,@babel/register 只會對 require命令加載的文件轉(zhuǎn)碼痴施,而不會對當(dāng)前文件轉(zhuǎn)碼擎厢。另外究流,由于它是實(shí)時(shí)轉(zhuǎn)碼,所有只適合在開發(fā)環(huán)境使用动遭。


babel API

如果某些代碼需要條用 BabelAPI 進(jìn)行轉(zhuǎn)碼梯嗽,就要使用 @babel/core 模塊。

配置對象 options 沽损,可以參考官方文檔 http://babeljs.io/docs/usage/options/灯节。

下面是一個(gè)例子:

上面代碼中,transform 方法的第一個(gè)參數(shù)是一個(gè)字符串绵估,表示需要被轉(zhuǎn)換的 ES6 代碼炎疆,第二個(gè)參數(shù)是轉(zhuǎn)換的配置對象。


@babel/polyfill

Babel 默認(rèn)值轉(zhuǎn)換新的 Javascript 句法(syntax)国裳,而不轉(zhuǎn)換新的 API 形入,比如 Iterator , Generator 缝左, Set 亿遂, Map ,Proxy 渺杉, Reflect , Symbol , Promise 等全局對象蛇数,以及一些定義在全局對象上的方法(比如 Object.assign )都不會轉(zhuǎn)嗎。

距離來說是越,ES6Array 對象上新增了 Array.from 方法耳舅。Babel 就不會轉(zhuǎn)碼這個(gè)方法。如果想讓這個(gè)方法運(yùn)行倚评,必須使用 babel-polyfill 浦徊,為當(dāng)前環(huán)境提供一個(gè)墊片。

安裝命令如下:

然后天梧,在腳本頭部盔性,加如下一行代碼:

Babel 默認(rèn)不轉(zhuǎn)碼的 API 非常多,詳細(xì)清單可以查看 babel-plugin-transform-rutime 模塊的 definitions.js 文件呢岗。


瀏覽器環(huán)境

Babel 也可以用于瀏覽器環(huán)境 冕香, 使用 @babel/standalone 模塊提供的瀏覽器版本,將其插入網(wǎng)頁:

注意:網(wǎng)頁實(shí)時(shí)將 ES6 代碼轉(zhuǎn)為 ES5 敷燎,對性能有影響暂筝。生產(chǎn)環(huán)境需要加載已經(jīng)轉(zhuǎn)碼完成的腳本箩言。

Babel 提供一個(gè) REPL 在線編譯器硬贯,可以在線將? ES6 代碼轉(zhuǎn)為 ES5 代碼。轉(zhuǎn)換后的代碼陨收,可以直接作為 ES5 代碼插入網(wǎng)頁運(yùn)行饭豹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鸵赖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拄衰,更是在濱河造成了極大的恐慌它褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘悉,死亡現(xiàn)場離奇詭異茫打,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妖混,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門老赤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人制市,你說我怎么就攤上這事抬旺。” “怎么了祥楣?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵开财,是天一觀的道長。 經(jīng)常有香客問我误褪,道長责鳍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任兽间,我火速辦了婚禮薇搁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渡八。我一直安慰自己啃洋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布屎鳍。 她就那樣靜靜地躺著宏娄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逮壁。 梳的紋絲不亂的頭發(fā)上孵坚,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音窥淆,去河邊找鬼卖宠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忧饭,可吹牛的內(nèi)容都是我干的扛伍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼词裤,長吁一口氣:“原來是場噩夢啊……” “哼刺洒!你這毒婦竟也來了鳖宾?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤逆航,失蹤者是張志新(化名)和其女友劉穎鼎文,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體因俐,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拇惋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抹剩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚤假。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡祟绊,死狀恐怖宋舷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颁井,我是刑警寧澤境蔼,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布灶平,位于F島的核電站,受9級特大地震影響箍土,放射性物質(zhì)發(fā)生泄漏逢享。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一吴藻、第九天 我趴在偏房一處隱蔽的房頂上張望瞒爬。 院中可真熱鬧,春花似錦沟堡、人聲如沸侧但。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禀横。三九已至,卻和暖如春粥血,著一層夾襖步出監(jiān)牢的瞬間柏锄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工复亏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趾娃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓缔御,卻偏偏與公主長得像抬闷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子刹淌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 用命令饶氏,可以查看你正在使用的Node環(huán)境對ES6的支持程度。 使用下面的命令有勾,可以查看Node所有已經(jīng)實(shí)現(xiàn)的ES6...
    zcwfeng閱讀 725評論 0 2
  • babel官網(wǎng) babel 介紹 Babel 是一個(gè)通用的多用途 JavaScript 編譯器疹启。通過 Babel ...
    鋒享前端閱讀 1,817評論 0 10
  • ECMAScript 6 簡介 原文: ECMAScript 6.0(以下簡稱 ES6)是 JavaScript ...
    huilegezai閱讀 379評論 0 0
  • Babel是一個(gè)廣泛使用的轉(zhuǎn)碼器,可以將ES6代碼轉(zhuǎn)為ES5代碼蔼卡,從而在現(xiàn)有環(huán)境執(zhí)行喊崖。 這意味著,你可以現(xiàn)在就用 ...
    yichen_china閱讀 1,312評論 0 3
  • 1. Babel 轉(zhuǎn)碼器 Babel 是一個(gè)廣泛使用的 ES6 轉(zhuǎn)碼器雇逞,可以將 ES6 代碼轉(zhuǎn)為 ES5 代碼荤懂,從...
    Metallica_d8b1閱讀 240評論 0 0