学习笔记——vite 打包构建优化之tree shaking

vite 打包构建优化

开发环境优化
生产环境优化

tree shaking 解释说明

1、代码引入但是没有使用 对应函数
1.1、 如果代码中有副作用

副作用的理解: 如修改全局变量、修改 DOM、执行日志等

js 复制代码
/* 本身就是副作用 */
console.log("side effect");
/* 这种/ 上面描述这种 副作用 我们可以通过 特殊方式进行处理 来让他们打包进入我们的最终产物中 */
window.abc = "hello";
1.2、解决方案

🟢 1.2.1、 通过 package.json 中 配置 sideEffects

json 复制代码
// package.json 中 配置 sideEffects 为false 表示 代码中没有副作用  为 true 表示 代码中有副作用
"sideEffects": false
json 复制代码
"sideEffects": true

🟢 1.2.2、通过添加注释 说明 代码中没有副作用

js 复制代码
/*#__PURE__*/ console.log(
  "我本身是有副作用的 但是你给我加了这个注释 那我就没有副作用了"
);
console.log("我本身是有副作用的 你没有给我加注释 所以我就是有副作用的");
js 复制代码
console.log("我本身是有副作用的 但是你给我加了这个注释 那我就没有副作用了");

console.log("我本身是有副作用的 你没有给我加注释 所以我就是有副作用的");

🟢 1.2.3、

  • 🟢 1.2、 如果代码中没有副作用

    js 复制代码
    export function square(x: any) {
      const a = "我是过节";
      return x * x + a;
    }
    export function cube(x: any) {
      return x * x * x;
    }
js 复制代码
如果只是在其他模块引入 但是没有使用 里面的函数 则不会将此函数打包进最终的代码
  • 🔴 3、遇到的问题 lodash 引用一个但是 打包产物是整个产物

    • 🟢 3.1、
js 复制代码
/* 错误的引入方式 */
import * as _ from "lodash";
/* 1. 使用按需导入 在我的项目中 占用 5% */
import shuffle from "lodash/shuffle"; // 只引入 shuffle 函数
/* 2. 使用 lodash-es(ES Module 版本) 占用 3% */
import { shuffle } from "lodash-es"; // 支持按需导入
bash 复制代码
 npm install lodash-es
相关推荐
一只大鸽子1 分钟前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot
旖旎夜光21 分钟前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
Nuanyt41 分钟前
LeetCode Hot 100 链表专题2 3 题 (Java)
java·笔记·算法·leetcode·链表
asaotomo44 分钟前
截图识题、AI 讲解、笔记沉淀:Chrome 扩展体验
前端·chrome·笔记
熊猫钓鱼>_>1 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹
H_BB1 小时前
面试笔记:数据加密和心跳机制
笔记·面试·职场和发展
海绵宝宝转agent1 小时前
LeetCodehot100题解
java·笔记·学习·算法·leetcode·深度优先
芒果作者2 小时前
我决定系统学习 Codex,并建立一套自己的知识库
学习
2601_961146202 小时前
实验室等离子表面处理设备安全整改记录:通风、UV、接地三项
笔记·安全·uv
ACP广源盛139246256733 小时前
高速 USB 切换方案选型笔记:10Gbps 全通道同步开关 LH6828@ACP 评估
笔记·硬件架构·国产芯片