記一次 ES6 在低版本瀏覽器的適配過程

出現(xiàn)的問題

在項(xiàng)目中使用了 ES6 的語法拷获,比如let盔粹、const,導(dǎo)致在iOS 9.3.3版本的瀏覽器報(bào)錯(cuò)夯接,但是在高版本的瀏覽器顯示正常舌菜。

嘗試解決

在確定了是由 ES6 新特性引起的報(bào)錯(cuò)以后冯勉,我們可以換回ES5的語法澈蚌,當(dāng)然這種不適合我們目前的情景。那有沒有什么辦法能把 ES6 在低版本瀏覽器中轉(zhuǎn)譯成ES5的語法呢灼狰?有宛瞄。
目前有很多團(tuán)隊(duì)針對(duì)ES6的兼容問題,開發(fā)出了多種語法解析轉(zhuǎn)換工具來把 ES6 轉(zhuǎn)換成ES5交胚,比較通用的解決方案有babel份汗、jsxes6-shim等蝴簇,接下來我們就使用babel來做適配杯活。

Babel

Babel 是一個(gè)轉(zhuǎn)換編譯器,它能將 ES6 轉(zhuǎn)換成可以在瀏覽器中運(yùn)行的代碼熬词。Babel 可以處理 ES6 的所有新語法旁钧,并且內(nèi)置了 React JSX 擴(kuò)展及 Flow 類型注解支持吸重。

我們?cè)?code>HTML頁面中直接引用babel

<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

然后在頁面JS代碼部分做如下修改

<script type="text/babel">

完成了上述操作以后,我們?cè)跒g覽器里重新運(yùn)行歪今,這時(shí)候我們會(huì)發(fā)現(xiàn)如果頁面只是使用了 ES6 的語法晤锹,上述轉(zhuǎn)換是沒有問題的,可以正常運(yùn)行彤委,但是如果使用了 ES6 的新增API鞭铆,瀏覽器依然會(huì)報(bào)錯(cuò)。造成報(bào)錯(cuò)的原因就是 Babel默認(rèn)只轉(zhuǎn)換 ES6 的新語法(syntax)焦影,不轉(zhuǎn)換新的API

我們需要使用babel-polyfill實(shí)現(xiàn)對(duì) ES6 新API的支持

babel-polyfill

Babel 默認(rèn)只轉(zhuǎn)碼 ES6 的新語法(syntax)车遂,而不轉(zhuǎn)換新的 API,比如 Set斯辰、Maps舶担、ProxyReflect彬呻、Symbol衣陶、Promise 等全局對(duì)象,以及一些定義在全局對(duì)象上的方法(比如 Object.assign闸氮、Array.from)都不會(huì)轉(zhuǎn)碼剪况。

如果想讓這些方法運(yùn)行,必須使用 babel-polyfill蒲跨,為當(dāng)前環(huán)境提供一個(gè)中間層译断。

通過babel-polyfill可以讓我們使用如下新API:

  • ArrayBuffer
  • Array.from
  • Array.of
  • Array#copyWithin
  • Array#fill
  • Array#find
  • Array#findIndex
  • Function#name
  • Map
  • Math.acosh
  • Math.hypot
  • Math.imul
  • Number.isNaN
  • Number.isInteger
  • Object.assign
  • Object.getOwnPropertyDescriptors
  • Object.is
  • Object.entries
  • Object.values
  • Object.setPrototypeOf
  • Promise
  • Reflect
  • RegExp#flags
  • Set
  • String#codePointAt
  • String#endsWith
  • String.fromCodePoint
  • String#includes
  • String.raw
  • String#repeat
  • String#startsWith
  • String#padStart
  • String#padEnd
  • Symbol
  • WeakMap
  • WeakSet

進(jìn)入項(xiàng)目文件夾,使用npm方式安裝polyfill:

npm install --save-dev babel-polyfill

在頁面中引用:

<script type="text/javascript" src="node_modules/babel-polyfill/dist/polyfill.min.js"></script>

再運(yùn)行頁面或悲,就不會(huì)有報(bào)錯(cuò)出現(xiàn)了孙咪,而且頁面中使用新API的地方也完美的運(yùn)行通過。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巡语,一起剝皮案震驚了整個(gè)濱河市翎蹈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌男公,老刑警劉巖荤堪,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異理澎,居然都是意外死亡逞力,警方通過查閱死者的電腦和手機(jī)曙寡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門糠爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人举庶,你說我怎么就攤上這事执隧。” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵镀琉,是天一觀的道長(zhǎng)峦嗤。 經(jīng)常有香客問我,道長(zhǎng)屋摔,這世上最難降的妖魔是什么烁设? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮钓试,結(jié)果婚禮上装黑,老公的妹妹穿的比我還像新娘。我一直安慰自己弓熏,他們只是感情好恋谭,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挽鞠,像睡著了一般疚颊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上信认,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天材义,我揣著相機(jī)與錄音,去河邊找鬼嫁赏。 笑死母截,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的橄教。 我是一名探鬼主播清寇,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼护蝶!你這毒婦竟也來了华烟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤持灰,失蹤者是張志新(化名)和其女友劉穎盔夜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堤魁,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡喂链,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妥泉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椭微。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖盲链,靈堂內(nèi)的尸體忽然破棺而出蝇率,到底是詐尸還是另有隱情迟杂,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布本慕,位于F島的核電站排拷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锅尘。R本人自食惡果不足惜监氢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藤违。 院中可真熱鬧忙菠,春花似錦、人聲如沸纺弊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淆游。三九已至傍睹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間犹菱,已是汗流浹背拾稳。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腊脱,地道東北人访得。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像陕凹,于是被迫代替她去往敵國(guó)和親悍抑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361