十九囤热、使用babel處理一般項(xiàng)目中的 ES6語(yǔ)法 ------ 2019-06-01

一昙啄、babel的作用:
1穆役、官網(wǎng)解釋 : Babel 是一個(gè)工具鏈,主要用于將 ECMAScript 2015+(ES6) 版本的代碼轉(zhuǎn)換為向后兼容的 JavaScript 語(yǔ)法梳凛,以便能夠運(yùn)行在當(dāng)前和舊版本的瀏覽器或其他環(huán)境中耿币。

2、關(guān)于ES6的兼容性:ES6語(yǔ)法不是所有的瀏覽器都支持韧拒、都能運(yùn)行淹接,
Chrome:51 版起便可以支持 97% 的 ES6 新特性十性。
Firefox:53 版起便可以支持 97% 的 ES6 新特性。
Safari:10 版起便可以支持 99% 的 ES6 新特性塑悼。
IE:Edge 15可以支持 96% 的 ES6 新特性劲适。Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)win10之后的瀏覽器是edge厢蒜。之前的是IE霞势。

所以為了你的項(xiàng)目能夠在所有終端上都能運(yùn)行,最保險(xiǎn)的辦法是將你的ES6語(yǔ)法轉(zhuǎn)換成所有瀏覽器都支持的ES5語(yǔ)法斑鸦,所以愕贡,babel就是用來(lái)干這件事的;

簡(jiǎn)單點(diǎn)說(shuō)巷屿,babel就是將項(xiàng)目中你寫(xiě)的ES6語(yǔ)法固以,比如箭頭函數(shù)、map()等語(yǔ)法特性攒庵,轉(zhuǎn)換成瀏覽器能夠識(shí)別的嘴纺,低級(jí)的JS語(yǔ)法;

二浓冒、babel的使用:
1栽渴、安裝:npm install --save-dev babel-loader @babel/core
(1)babel-loader的作用:babel-loader僅僅是webpack和babel之間溝通的橋梁,并不負(fù)責(zé)將ES6語(yǔ)法轉(zhuǎn)換成低級(jí)的JS語(yǔ)法稳懒;
(2)babel/core的作用:babel/core是babel的核心庫(kù)闲擦,最終將ES6語(yǔ)法轉(zhuǎn)換成低級(jí)JS語(yǔ)法的就是他;

2场梆、配置:

在webpack的loader配置規(guī)則下新增一個(gè)節(jié)點(diǎn):
  module: {
        rules: [
            //    file-loader的配置規(guī)則
            省略...
            // url-loader的配置規(guī)則
            省略...
            // postcss-loader的配置
            省略...
            // babel-loader的配置
            {
                test: /\.js$/,
                // exclude是將node-module文件夾下的JS文件排除墅冷,
                //因?yàn)榈谌讲寮呀?jīng) 處理了語(yǔ)法轉(zhuǎn)換
                exclude: /node_modules/,
                loader: "babel-loader"
            }
        ]
    },

三、使用babel/preset-env 讓babel將ES6語(yǔ)法轉(zhuǎn)換成ES5
1或油、安裝:npm install @babel/preset-env --save-dev
2寞忿、配置

module: {
     rules: [
         //    file-loader的配置規(guī)則
         省略...
         // url-loader的配置規(guī)則
         省略...
         // postcss-loader的配置
         省略...
         // babel-loader的配置
         {
             test: /\.js$/,
             // exclude是將node-module文件夾下的JS文件排除,
             //因?yàn)榈谌讲寮呀?jīng) 處理了語(yǔ)法轉(zhuǎn)換
             exclude: /node_modules/,
             loader: "babel-loader",
            options:{
                 "presets": ["@babel/preset-env"]
             }
         }
     ]
 },

四顶岸、使用babel/polyfill補(bǔ)充瀏覽器沒(méi)有實(shí)現(xiàn)的語(yǔ)法:

1腔彰、安裝:npm install --save @babel/polyfill

2、使用:在 業(yè)務(wù)代碼文件頂部直接引入:
import "@babel/polyfill";

3辖佣、使用了babel/polyfill后霹抛,當(dāng)我們打包項(xiàng)目時(shí),babel/polyfill會(huì)自動(dòng)幫我們?cè)诔隹谖募袑?shí)現(xiàn)那些瀏覽器沒(méi)有的語(yǔ)法特性卷谈,導(dǎo)致出口文件體積驟增杯拐,但是,我們可能在我們的項(xiàng)目中僅僅只使用了一兩個(gè)或者壓根沒(méi)使用那些補(bǔ)充的語(yǔ)法,那我們就不需要這些語(yǔ)法補(bǔ)充啊端逼,怎么辦朗兵??顶滩?
此時(shí)矛市,我們可以在babel-loader的配置規(guī)則中新增一個(gè)參數(shù):

module: {
        rules: [
            //    file-loader的配置規(guī)則
            省略...
            // url-loader的配置規(guī)則
            省略...
            // postcss-loader的配置
            省略...
            // babel-loader的配置
            {
                test: /\.js$/,
                // exclude是將node-module文件夾下的JS文件排除,
                //因?yàn)榈谌讲寮呀?jīng) 處理了語(yǔ)法轉(zhuǎn)換
                exclude: /node_modules/,
                loader: "babel-loader",
               options:{
                   "presets": [['@babel/preset-env',{
                        useBuiltIns:'usage'
                    }]]
                }
            }
        ]
    },
useBuiltIns:'usage' 的意思是诲祸,只有我們項(xiàng)目中用到的瀏覽器沒(méi)有實(shí)現(xiàn)的語(yǔ)法特性,在打包的時(shí)候而昨,才會(huì)幫我們?cè)诔隹谖募袑?shí)現(xiàn)救氯,而不是把所有的瀏覽器沒(méi)有實(shí)現(xiàn)的語(yǔ)法特性都幫我們?cè)诔隹谖募袑?shí)現(xiàn);

五歌憨、將babel-loader的配置抽離到 .babelrc 文件中
就是將babel-loader中的options的值着憨,單獨(dú)放到 .babelrc 文件中;

1务嫡、在項(xiàng)目根目錄下創(chuàng)建一個(gè) .babelrc 文件
2甲抖、將bable-loader的options選項(xiàng)的值({}這個(gè)形式),放到.babelrc文件中即可心铃;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末准谚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子去扣,更是在濱河造成了極大的恐慌柱衔,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愉棱,死亡現(xiàn)場(chǎng)離奇詭異唆铐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)奔滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)艾岂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人朋其,你說(shuō)我怎么就攤上這事王浴。” “怎么了令宿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵叼耙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我粒没,道長(zhǎng)筛婉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮爽撒,結(jié)果婚禮上入蛆,老公的妹妹穿的比我還像新娘。我一直安慰自己硕勿,他們只是感情好哨毁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著源武,像睡著了一般扼褪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上粱栖,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天话浇,我揣著相機(jī)與錄音,去河邊找鬼闹究。 笑死幔崖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渣淤。 我是一名探鬼主播赏寇,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼价认!你這毒婦竟也來(lái)了嗅定?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刻伊,失蹤者是張志新(化名)和其女友劉穎露戒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捶箱,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡智什,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丁屎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荠锭。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晨川,靈堂內(nèi)的尸體忽然破棺而出证九,到底是詐尸還是另有隱情,我是刑警寧澤共虑,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布愧怜,位于F島的核電站,受9級(jí)特大地震影響妈拌,放射性物質(zhì)發(fā)生泄漏拥坛。R本人自食惡果不足惜蓬蝶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猜惋。 院中可真熱鬧丸氛,春花似錦、人聲如沸著摔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谍咆。三九已至禾锤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間摹察,已是汗流浹背时肿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留港粱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓旦签,卻偏偏與公主長(zhǎng)得像查坪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宁炫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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