最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • webpack -- tree shaking 介绍:

    正文概述 掘金(优质青年小张)   2021-05-22   372

    tree shaking 的作用:

    在我们使用webpack进行打包的时候,我们现在有一个有一个模块A.js;我们在index.js中引入A模块的部分代码;tree shaking会帮我们吧我们不需要的其他代码删除掉;只打包我们已经使用的代码

    1. 一个模块引用了没有被使用;
    2. 一个模块中可能有很多方法,但实际使用中可能没有被全部使用到;
    3. 代码中Dead code 死代码;
    就像这样:
    // A.js
    export const a = 'a';
    export const b = 'b';    // 不导出,删除
    export const c = 'c';    // 导出不引用,删除
    
    // index.js 
    import { a, c } from './a.js'; 
    console.log(a);
    if(false) {             // 不会执行的代码,删除
      console.log('去除我');  
    }
    

    使用:

    在mode:production的模式下 tree shaking自动启用;不需要我们手动开启; 必须使用ES6语法,不支持CJS,因为import和require的引入方式是不同的; 因为 tree shaking只能对静态的代码进行分析;import引入属于静态引入,而require属于动态引入;

    注意

    在我们使用的过程中;我发现tree shaking并不能对我们的一些副作用代码进行优化; 像class中一些方法,和一些副作用函数之类的; 副作用:副作用可以理解成某个模块执行时除了导出成员之外所作的事情;详细就不累述了;

    tree shaking优化:sideEffects:true/false/数组

    前提:webpack 的版本号要大于等于 4

    解释:

    false :告诉 webpack 我这个 npm 包里的所有文件代码都是没有副作用的; 数组:数组则表示告诉 webpack 我这个 npm 包里指定文件代码是没有副作用的

    使用

    // package.json
    {
        "sideEffects": false
    }
    // antd package.json
    {
      "sideEffects": [
        "dist/*",
        "es/**/style/*",
        "lib/**/style/*"
      ]
    }
    

    我们还可以对webpack 的配置文件中配置:

    module.exports = {
      module: {
        rules: [
          {
            test: /\.jsx?$/,
            exclude: /(node_modules|bower_components)/,
            use: {
              loader: 'babel-loader',
            },
            sideEffects: false || []
          }
        ]
      },
    }
    

    这样就会对我们的整个项目生效了;我们就可以愉快的吧我们的不需要的副作用代码优化掉!


    起源地下载网 » webpack -- tree shaking 介绍:

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元