第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

16、webpack從0到1-tree shaking

標(biāo)簽:
Node.js Vue.js webpack

tree shaking,这个还是一个比较重要的一个东西吧,可以大大的优化你的项目。
git仓库:webpack-demo

1、是什么?

  • 我们首先从字面意思上来理解一下,tree shaking翻译一下就是摇树罗,摇树的时候就会把不必要的枯枝烂叶给摇下来,同理,到代码中,tree shaking就是把没有用到的代码shaking掉。

  • tree-shaking只有使用es6的模块化规范才有效,如果你使用commonJs模块化规范是搞不了tree-shaking的,为什么?

因为ES6模块是运行时加载(静态加载),即可以在编译时就完成模块加载,使得编译时就能确定模块的依赖关系,可以进行可靠的静态分析,这就是tree shaking的基础。
CommonsJs必须在跑起来运行的时候才能确定依赖关系,所以与不能tree-shaking
– 参考阮大神的讲解–>Module 的语法
概述

2、配置开发环境

  • 如果你看要tree-shaking的一个具体的效果,那么你需要在mode:development中,因为在生产环境的时候,webpack会自动帮我们做tree-shaking

  • 示例代码可以直接看官网的,大概就这么几个配置:

  • 设置usedExports为true

mode: 'development',
optimization: {
  usedExports: true,
},
  • package.json中设置下sideEffects,也可以是一个数组如"sideEffects": ["*.css"]就表示所有引入的css文件不做tree-shaking
{
  "name": "webpack-easy-demo",
+ "sideEffects": false,
}
  • 这里配置好了就ok了,但是有个最大的问题是什么,看官网是这么说的:

Ensure no compilers transform your ES2015 module syntax into CommonJS modules (this is the default behavior of the popular Babel preset @babel/preset-env - see the documentation for more details).
要确保没有编译器把es6的语法转换为require这种commonJs的这种写法,但是babel的这个@babel/preset-env配置的默认行为就是如此。

  • 我们配置使用bable配置es6的时候就要使用了这个,如此一来,岂不凉了?为了不让babeles6import/expot转为commonJs规范的require写法,我们需要这样:
{
   loader: "babel-loader",
   options: {
     presets: [
        [
          "@babel/preset-env",
          {
            useBuiltIns: "usage",
            corejs: { version: 3, proposals: true },
+           // 禁止将import/export转为require写法
+           modules: false
          }
        ]
      ]
   }
}

3、配置生产环境

  • 配置生产环境就很简单了。
    • mode设置为production
    • 设置下sideEffects;
    • 设置下bable配置modules: false

4、小结

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消