iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >tree shaking对打包体积优化及作用实例分析
  • 177
分享到

tree shaking对打包体积优化及作用实例分析

2023-07-02 15:07:19 177人浏览 薄情痞子
摘要

这篇“tree shaking对打包体积优化及作用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“tree&

这篇“tree shaking对打包体积优化及作用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“tree shaking对打包体积优化及作用实例分析”文章吧。

有啥用?

Tree Shaking中文含义是摇树,在webpack中指的是打包时把无用的代码摇掉,以优化打包结果。

WEBpack5已经自带了这个功能了,当打包环境为production时,默认开启tree-shaking功能。

实践

前置准备

准备两个文件main.js、util.js

util.js

function a () {  console.log('a')}function b () {  console.log('b')}export default {  a, b}

main.js

import a from './util'// 使用a变量,调用文件里面的a函数,不使用b函数console.log(a.a())console.log('hello world')// 不可能执行的代码if (false) {  console.log('haha')}// 定义了但是没用的变量const m = 1

打包

前面说了webpack5在环境production下打包的话,默认开启tree-shaking,那我们运行npm run build进行一下打包,看看打包后的代码长啥样:

(()=>{"use strict";const o=function(){console.log("a")};console.log(o())console.log("hello world")})();

结论:可以看到打包后,把b函数、不可能执行的代码、定义未用的变量通通都剔除了,这在一个项目中,能减少很多的代码量,进而减少打包后的文件体积。

sideEffects

副作用

先来讲讲一个东西——副作用,是什么东西呢?副作用指的是:除了导出成员之外所做的事情,我举个例子,下面的a.js是没副作用的,b.js是有副作用的:

a.js

function console () {  console.log('console')}export default {  console}

b.js

function console () {  console.log('console')}// 这个就是副作用,会影响全局的数组Array.prototype.func = () => {}export default {  console}

有无副作用的判断,可以决定tree-shaking的优化程度,举个例子:

  • 我现在引入a.js但是我不用他的console函数,那么在优化阶段我完全可以不打包a.js这个文件。

  • 我现在引入b.js但是我不用他的console函数,但是我不可以不打包b.js这个文件,因为他有副作用,不能不打包。

sideEffects的使用

sideEffects可以在package.JSON中设置:

// 所有文件都有副作用,全都不可 tree-shaking{ "sideEffects": true}// 没有文件有副作用,全都可以 tree-shaking{ "sideEffects": false}// 只有这些文件有副作用,// 所有其他文件都可以 tree-shaking,// 但会保留这些文件{ "sideEffects": [  "./src/file1.js",  "./src/file2.js" ]}

优化体积

当我把sideEffects设置成true之后,整个打包体积增加了100k,说明默认的false还是有用的。

以上就是关于“tree shaking对打包体积优化及作用实例分析”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: tree shaking对打包体积优化及作用实例分析

本文链接: https://www.lsjlt.com/news/342832.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • tree shaking对打包体积优化及作用实例分析
    这篇“tree shaking对打包体积优化及作用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“tree&...
    99+
    2023-07-02
  • tree shaking对打包体积优化及作用
    目录背景有啥用?实践前置准备打包sideEffects副作用sideEffects的使用优化体积背景 大家平时在查 webpack构建体积优化 ,可能都会查到 tree-shakin...
    99+
    2024-04-02
  • C++类的对象作类成员调用构造、析构函数及静态成员实例分析
    这篇文章主要介绍了C++类的对象作类成员调用构造、析构函数及静态成员实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++类的对象作类成员调用构造、析构函数及静态成员实例分析文章都会有所收获,下面我们一起...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作