Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[QA]: mako tree shaking 的原理 #1685

Closed
xingwanying opened this issue Nov 8, 2024 · 1 comment
Closed

[QA]: mako tree shaking 的原理 #1685

xingwanying opened this issue Nov 8, 2024 · 1 comment

Comments

@xingwanying
Copy link

No description provided.

Copy link

Mako 的 tree shaking 是一种用于优化代码的死代码删除技术。其基本原理是通过分析模块之间的引用关系,移除未使用的代码。以下是 Mako tree shaking 的大致流程:

  1. 移除未使用的语句:首先,根据当前模块中所有被引用的导出变量,移除本模块中没有被使用到的语句。
  2. 记录引用信息:移除完这些语句后,分析出本模块引用了哪些依赖模块的变量,并将这些引用信息记录到相应的依赖模块上。
  3. 递归处理:如果一个模块的所有被引用情况都记录完之后,对这个模块执行第1步。如此往复下去,整个项目中所有没有使用到的代码都会被移除。

Mako 的 tree shaking 需要从入口模块开始,因为入口模块不会被其他模块引用。通过这种方式,可以逐步确定每个模块的引用情况,并进行相应的代码优化。

需要注意的是,tree shaking 是一个概念,没有具体实现的规范,因此不同的构建工具可能会有不同的实现方式。

如果你有更多关于 Mako 的问题,请随时告诉我。

如需进一步帮助,请在评论中描述您的问题并@petercat-assistant与我开始对话。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant