欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

前端科普系列(4):Babel——把ES6送上天的通天塔-創(chuàng)新互聯(lián)

本文首發(fā)于 vivo互聯(lián)網(wǎng)技術(shù) 微信公眾號(hào) 
鏈接:  https://mp.weixin.qq.com/s/plJewhUd0xDXh4Ce4CGpHg
作者:Morrain

成都創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、麒麟網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為麒麟等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

一、前言

在上一節(jié) 《 CommonJS:不是前端卻革命了前端》中,我們聊到了 ES6 Module,它是 ES6 中對(duì)模塊的規(guī)范,ES6 是 ECMAScript 6.0 的簡(jiǎn)稱,泛指 JavaScript 語(yǔ)言的下一代標(biāo)準(zhǔn),它的第一個(gè)版本 ES2015 已經(jīng)在 2015 年 6 月正式發(fā)布,本文中提到的 ES6 包括 ES2015、ES2016、ES2017等等。在第一節(jié)的《Web:一路前行一路忘川》中也提到過(guò),ES2015 從制定到發(fā)布?xì)v經(jīng)了十幾年,引入了很多的新特性以及新的機(jī)制,瀏覽器對(duì) ES6 的支持進(jìn)度遠(yuǎn)遠(yuǎn)趕不上前端開(kāi)發(fā)小哥哥們使用 ES6 的熱情,于是矛盾就日益顯著……

二、Babel 是什么

先來(lái)看下它在 官網(wǎng)上的定義:

Babel is a JavaScript compiler

沒(méi)錯(cuò)就一句話,Babel 是 JavaScript 的編譯器。至于什么是編譯器,可以參考  the-super-tiny-compiler 這個(gè)項(xiàng)目,可以找到很好的答案。

本文是以 Babel 7.9.0 版本進(jìn)行演示和講解的,另外建議學(xué)習(xí)者閱讀英文官網(wǎng),中文官網(wǎng)會(huì)比原版網(wǎng)站慢一個(gè)版本,并且很多依然是英文的。

Babel 就是一套解決方案,用來(lái)把 ES6 的代碼轉(zhuǎn)化為瀏覽器或者其它環(huán)境支持的代碼。 注意我的用詞哈,我說(shuō)的不是轉(zhuǎn)化為 ES5 ,因?yàn)椴煌愋鸵约安煌姹镜臑g覽器對(duì) ES6 新特性的支持程度都不一樣,對(duì)于瀏覽器已經(jīng)支持的部分,Babel 可以不轉(zhuǎn)化,所以 Babel 會(huì)依賴瀏覽器的版本,后面會(huì)講到。這里可以先參考  browerslist 項(xiàng)目。

Babel 的歷史

在學(xué)習(xí)任何一門(mén)知識(shí)前,我都習(xí)慣先了解它的歷史,這樣才能深刻理解它存在意義。

Babel 的作者是 FaceBook 的工程師 Sebastian McKenzie。他在 2014 年發(fā)布了一款 JavaScript 的編譯器 6to5。從名字就能看出來(lái),它主要的作用就是將 ES6 轉(zhuǎn)化為 ES5。

這里的 ES6 指 ES2015,因?yàn)楫?dāng)時(shí)還沒(méi)有正式發(fā)布, ES2015 的名字還未被正式確定。

于是很多人評(píng)價(jià),6to5 只是 ES6 得到支持前的一個(gè)過(guò)渡方案,它的作者非常不同意這個(gè)觀點(diǎn),認(rèn)為 6to5 不光會(huì)按照標(biāo)準(zhǔn)逐步完善,依然具備非常大的潛力反過(guò)來(lái)影響并推進(jìn)標(biāo)準(zhǔn)的制定。正因?yàn)槿绱?6to5 的團(tuán)隊(duì)覺(jué)得 '6to5' 這個(gè)名字并沒(méi)有準(zhǔn)確的傳達(dá)這個(gè)項(xiàng)目的目標(biāo)。加上 ES6 正式發(fā)布后,被命名為 ES2015,對(duì)于 6to5 來(lái)說(shuō)更偏離了它的初衷。于是 2015 年 2 月 15 號(hào),6to5 正式更名為 Babel。

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

(圖片來(lái)源于網(wǎng)絡(luò))

Babel 是巴比倫文化里的通天塔,用來(lái)給 6to5 這個(gè)項(xiàng)目命名真得太貼切了!羨慕這些牛逼的人,不光代碼寫(xiě)得好,還這么有文化,不像我們,起個(gè)變量名都得憋上半天,吃了沒(méi)有文化的虧。這也是為什么我把這篇文章起名為 《Babel:把 ES6 送上天的通天塔》的原因。

三、Babel 怎么用

了解了 Babel 是什么后,很明顯我們就要開(kāi)始考慮怎么使用 Babel 來(lái)轉(zhuǎn)化 ES6 的代碼了,除了 Babel 本身提供的 cli 等工具外,它還支持和其它打包工具配合使用,譬如 webpack、rollup 等等,可以參考 官網(wǎng)對(duì)不同平臺(tái)提供的配置說(shuō)明。

本文為了感受 Babel 最原始的用法,不結(jié)合其它任何工具,直接使用 Babel 的 cli 來(lái)演示。

1、構(gòu)建 Babel 演示的工程

使用如下命令構(gòu)建一個(gè) npm 包,并新建 src 目錄 和 一個(gè) index.js 文件。

npm init -y

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

package.json 內(nèi)容如下:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

2、安裝依賴包

npm install --save-dev @babel/core @babel/cli @babel/preset-env

后面會(huì)介紹這些包的作用,先看用法

增加 babel 命令來(lái)編譯 src 目錄下的文件到 dist 目錄:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "scripts": {
    "babel": "babel src --out-dir dist",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.8.4",
    "@babel/core": "^7.9.0",
    "@babel/preset-env": "^7.9.0"
  }
}

3、增加 Babel 配置文件

在工程的根目錄添加 babel.config.js 文件,增加 Babel 編譯的配置,沒(méi)有配置是不進(jìn)行編譯的。

const presets = [
  [
    '@babel/env',
    {
      debug: true
    }
  ]
]
const plugins = []
 
module.exports = { presets, plugins }
前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

上例中 debug 配置是為了打印出 Babel 工作時(shí)的日志,可以方便的看來(lái),Babel 轉(zhuǎn)化了哪些語(yǔ)法。

  1. presets 主要是配置用來(lái)編譯的預(yù)置,plugins 主要是配置完成編譯的插件,具體的含義后面會(huì)講
  2. 推薦用 Javascript 文件來(lái)寫(xiě)配置文件,而不是 JSON 文件,這樣可以根據(jù)環(huán)境來(lái)動(dòng)態(tài)配置需要使用的 presets 和 plugins

const presets = [
  [
    '@babel/env',
    {
      debug: true
    }
  ]
]
const plugins = []
 
if (process.env["ENV"] === "prod") {
  plugins.push(...)
}
 
module.exports = { presets, plugins }

前端科普系列(4):Babel —— 把 ES6 送上天的通天塔

本文標(biāo)題:前端科普系列(4):Babel——把ES6送上天的通天塔-創(chuàng)新互聯(lián)
文章地址:http://aaarwkj.com/article48/ccdghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、全網(wǎng)營(yíng)銷推廣、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)網(wǎng)站內(nèi)鏈、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
不卡一区二区国产精品| 日韩人妻中出中文字幕| 久久亚洲精品1区2区| 国产免费成人在线视频| 精品毛片在线播放网站不卡| 亚洲欧美日韩性生活视频| 一区二区三区午夜激情| 午夜影院网站在线看黄| 国产精品色网在线播放| 81精品国产综合久久精品伦理| 九九九热免费在线观看| 精品久久一区麻豆香蕉| av天堂久久人妻精品加勒比| 在线观看中文字幕一区| 99精品国产高清一区二区三区| 风韵犹存丰满大屁股熟妇| 日本黄网色三级三级三级| 蜜桃传媒18传媒在线| 亚洲中文字幕乱码熟女在线| 国产又粗又长又大又长| 欧美日韩中文字幕精品| 色综合婷婷九月中文字幕| 婷婷六月亚洲激情综合| 日本 一区二区在线| 免费国产成人高清在线视频| 亚洲黄色艳情视频录像| 欧美亚洲国产青草久久| 五月开心婷婷开心五月活动推荐| 91精品国产老熟女在线| 男女性视频在线免费观看| 久久久人妻精品少妇av| 日韩精品伦理中文字幕| 亚洲国产精品成人女人| av资源天堂第一区第二区第三区| 最新亚洲国产高清激情| 日韩精品高清不卡一区二区三区| 国产传媒在线免费播放| 久久夜色精品国产高清不卡| 国产免费播放一区二区三区| 国产黄片大秀在线观看| 精品国产一区二区日韩91|