<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        Webpack4 使用Babel處理ES6語(yǔ)法的方法示例

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:00:22
        文檔

        Webpack4 使用Babel處理ES6語(yǔ)法的方法示例

        Webpack4 使用Babel處理ES6語(yǔ)法的方法示例:修改 index.js 內(nèi)容,寫(xiě)一些 ES6 的語(yǔ)法: const arr = [ new Promise(() => {}), new Promise(() => {}) ]; arr.map(item => { console.log(item); }) ES6 很強(qiáng)大,但目前并不是所有的瀏覽器都支持,所以需要用到 Bab
        推薦度:
        導(dǎo)讀Webpack4 使用Babel處理ES6語(yǔ)法的方法示例:修改 index.js 內(nèi)容,寫(xiě)一些 ES6 的語(yǔ)法: const arr = [ new Promise(() => {}), new Promise(() => {}) ]; arr.map(item => { console.log(item); }) ES6 很強(qiáng)大,但目前并不是所有的瀏覽器都支持,所以需要用到 Bab

        修改 index.js 內(nèi)容,寫(xiě)一些 ES6 的語(yǔ)法:

        const arr = [
         new Promise(() => {}),
         new Promise(() => {})
        ];
        
        arr.map(item => {
         console.log(item);
        })

        ES6 很強(qiáng)大,但目前并不是所有的瀏覽器都支持,所以需要用到 Babel,讓舊的瀏覽器或環(huán)境中將 ES6 代碼轉(zhuǎn)換為向后兼容版本的 JavaScript 代碼。

        來(lái)試一下吧,先安裝需要用的 Babel 包:

        npm install babel-loader @babel/core -D

        配置 webpack.config.js,增加一條 rulues :

         module: {
         rules: [{
         test: /\.js$/,
         exclude: /node_modules/, // 排除該目錄下的所有代碼
         loader: "babel-loader"
         }]
         }

        babel-loader 告訴了 webpack 怎么處理 ES6 代碼,但它并不會(huì)將ES6 代碼翻譯成向后兼容版本的代碼,如果想要執(zhí)行這一步,還需要安裝一個(gè)模塊 preset-env,它包含了所有 ES6 代碼轉(zhuǎn)換的規(guī)則:

        npm install @babel/preset-env -D

        安裝完之后配置一下:

        rules: [{
         test: /\.js$/,
         exclude: /node_modules/, // 排除該目錄下的所有代碼
         loader: 'babel-loader',
         options:{
         'presets': ['@babel/preset-env']
         }
        }]

        這樣,運(yùn)行打包命令,就可以把 ES6 語(yǔ)法翻譯成 ES5了,看一下打包的結(jié)果:

        沒(méi)問(wèn)題,語(yǔ)法已經(jīng)翻譯成了當(dāng)前所有瀏覽器能識(shí)別的語(yǔ)法,但是做到了這一點(diǎn)還是不夠,因?yàn)槟切┍容^新的對(duì)象和函數(shù),比如這里的 Promisemap,在低版本的瀏覽器里實(shí)際還是不存在的。所以這時(shí)不僅要進(jìn)行語(yǔ)法的轉(zhuǎn)換,還要想辦法把這些新的特性,補(bǔ)充到低版本的瀏覽器里。怎么做呢? babel 提供了一個(gè)工具叫 polyfill,安裝:

        npm install @babel/polyfill -D

        然后在 index.js 的最頂部,引入這個(gè)包:

        import '@babel/polyfill'

        保存代碼,再次進(jìn)行打包查看結(jié)果,可以發(fā)現(xiàn)打包后的 main.js 里面,有了很多代碼來(lái)幫助實(shí)現(xiàn)比如 Promisemap 這些新特性。看一下 main.js 文件的大小:

        859KB,再看一下沒(méi)有使用 polyfill 之前的 main.js 大小:

        只有4.36KB,使用 polyfill 之后文件變大了很多,這說(shuō)明了 polyfill 使用了非常多的代碼來(lái)填入新特性。
        但是,index.js 里只使用了 Promisemap,其它的新特性都沒(méi)用,能不能把那些沒(méi)用到的實(shí)現(xiàn)方法都剔除了呢? 可以,給 preset-env 增加一個(gè) useBuiltIns 配置:

        rules: [{
         test: /\.js$/,
         exclude: /node_modules/, // 排除該目錄下的所有代碼
         loader: 'babel-loader',
         options: {
         'presets': [
         ['@babel/preset-env', {
         useBuiltIns: 'usage'
         }]
         ]
         }
        }]

        useBuiltIns: 'usage' 的意思就是說(shuō),當(dāng)使用 polyfill 往低版本瀏覽器填入一些不存在的特性時(shí),不是全部都填入,而是根據(jù)業(yè)務(wù)代碼使用到的特性去選擇填入,比如這里使用了 Promisemap,那就只填入這兩個(gè),其它的都不用。 再次打包查看結(jié)果:

        可以看到,main.js 的大小只有 138KB了。

        這里還可以配置一些其它的參數(shù),比如 targets 參數(shù):

        rules: [{
         test: /\.js$/,
         exclude: /node_modules/, // 排除該目錄下的所有代碼
         loader: 'babel-loader',
         options: {
         'presets': [
         ['@babel/preset-env', {
         useBuiltIns: 'usage',
         targets:{
         edge: '17', // edge高于17的版本
         firefox: '60', // firefox 高于60的版本
         chrome: '67' // chrome高于67的版本
         }
         }]
         ]
         }
        }]

        targets 是指打包會(huì)運(yùn)行在什么樣的瀏覽器,這有三個(gè)瀏覽器,并注明了最低版本。在打包的過(guò)程中,babel 會(huì)去看這些瀏覽器對(duì) ES6 代碼的支持情況,是否有必要進(jìn)行語(yǔ)法轉(zhuǎn)換、填入一些新特性。 運(yùn)行打包命令查看結(jié)果:

        發(fā)現(xiàn)還是輸出的 Promisemap,并沒(méi)有進(jìn)行新特性的填入,說(shuō)明這三個(gè)版本的瀏覽器對(duì) ES6 的支持已經(jīng)很好了,不需要在進(jìn)行額外的處理,main.js 的大小是變成了最初的4.36KB。

        到此為止,webpack 對(duì) ES6 的簡(jiǎn)單處理就完成了。

        關(guān)于 babel 還有很多東西和配置項(xiàng),更多的知識(shí)要到 https://babel.docschina.org 來(lái)學(xué)習(xí)。

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Webpack4 使用Babel處理ES6語(yǔ)法的方法示例

        Webpack4 使用Babel處理ES6語(yǔ)法的方法示例:修改 index.js 內(nèi)容,寫(xiě)一些 ES6 的語(yǔ)法: const arr = [ new Promise(() => {}), new Promise(() => {}) ]; arr.map(item => { console.log(item); }) ES6 很強(qiáng)大,但目前并不是所有的瀏覽器都支持,所以需要用到 Bab
        推薦度:
        標(biāo)簽: 使用的 ES6 webpack
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产白丝无码免费视频| 免费播放美女一级毛片| 无码av免费网站| 亚洲国产精品久久久天堂| a级毛片免费在线观看| 亚洲国产精品嫩草影院在线观看 | 亚洲乳大丰满中文字幕| 99久久99这里只有免费的精品 | 亚洲日本乱码一区二区在线二产线 | 亚洲国产第一页www| 91精品国产免费久久国语蜜臀 | 18禁超污无遮挡无码免费网站国产| 亚洲AV无码乱码麻豆精品国产| 在线看片免费不卡人成视频| 亚洲老熟女五十路老熟女bbw| 国产免费久久精品久久久| 日韩久久无码免费毛片软件| 亚洲一区二区三区在线观看精品中文 | 免费国产va在线观看| 综合亚洲伊人午夜网| 日本免费大黄在线观看| 亚洲第一成人在线| 亚洲精品无码AV中文字幕电影网站| 日韩精品无码免费专区网站 | 亚洲av成人无码网站…| 中文字幕亚洲图片| 在线精品一卡乱码免费| 久久亚洲精品无码gv| 亚洲大尺度无码无码专区| 日韩欧毛片免费视频| 美女黄色免费网站| 亚洲一区免费观看| 国产成人精品免费直播| 免费无码黄网站在线看| 国产亚洲精aa在线看| 久久亚洲国产成人精品无码区| 国产精品久久免费| 成人免费网站久久久| 亚洲人成黄网在线观看| 亚洲国产精品日韩专区AV| 色老头永久免费网站|