---
title: "为什么需要 Farm？"
locale: "zh"
version: "current"
canonicalUrl: "https://farmfe.org/zh/docs/why-farm"
publicationStatus: "prerelease"
---

<a id="为什么需要-farm"></a>
# 为什么需要 Farm？


<a id="farm-是什么"></a>
## Farm 是什么？


Farm 是 Rust native Web 构建工具。编译器及内置编译插件在 Rust 中处理模块图、转换、打包与优化，官方 Rust 插件进一步覆盖框架、样式、资源与文档构建。


Node.js 负责配置、CLI 与开发服务器编排；需要时仍会使用 JavaScript 插件、React 渲染与应用运行时。Vite 插件适配器用于渐进迁移，而不是 Farm 架构的定义。


[查看官方 Rust 插件家族](</zh/docs/plugins/official-plugins/overview>)。v2 实现在包发布和正式版验收完成前仍为候选。


<a id="为什么需要-farm-1"></a>
## 为什么需要 Farm？


Farm 重点建设原生编译链：Rust 编译器负责模块处理与打包，官方 Rust 插件扩展框架、样式、资源和文档编译。在这些已支持的编译任务中，可减少 JavaScript 与原生边界之间的调用；这不代表 Node.js、React SSR 或应用代码不再存在。


持久缓存、懒编译与局部打包分别用于管理项目规模，收益应在相同工作负载、缓存状态和部署要求下实测，不承诺统一的启动、HMR 或构建倍数。


JavaScript 插件和 Vite 适配器继续用于合适的生态接入场景。迁移时需核对支持的 hooks，并验证开发、热更新和生产构建，不保证每个外部插件行为完全一致。


<a id="farm-设计理念"></a>
## Farm 设计理念


- **性能优先**：一切都会用 Rust 编写，只有少数不是性能瓶颈的部分会用 JS 编写
- **一致性**：默认情况下确保开发和生产完全相同，您在开发中看到的将与您在生产中得到的相同。
- **局部打包**：Farm 的打包目标不是将所有东西打包在一起，而是限制资源的请求数量。 Farm 会根据依赖关系和资源大小将您的项目捆绑成 20-30 个小资源，在不损失缓存粒度的情况下获得最佳的资源加载性能。
- **所有资源视为一等公民**：Farm 不再需要将所有内容转换为 Javascript，它将任何内容视为一等公民，如 ` html `、` js/jsx/ts/tsx `、` css/scss `、` png/svg/... `都是 Farm 支持的基础模块，更多类型的模块可以通过插件支持。
- **兼容性**：Farm 将适用于旧版 (ES5) 和现代浏览器。
- **Rollup 风格的插件系统**：轻松创建自己的插件，并轻松从 ` rollup/vite/webpack ` 迁移您的插件/项目。兼容 ` Vite/Rollup/Unplugin ` 插件


Farm 的目标是成为真正的下一代构建工具，快速、强大、一致，并为 Web 开发人员提供最佳的开发体验。
