概述
Fumadocs 15.2 在 fumadocs-core 之上引入了一个层,以扩展对其他 React 框架的支持,包括 React Router 和 Tanstack Start。其他框架也可以使用来自 fumadocs-core/framework/base 的 FrameworkProvider 来支持。
为什么?
Fumadocs 的主要焦点是灵活性,我的目标是支持更多框架,只要它不改变 Fumadocs 的基本原则,比如核心和 UI 包的分离。
React.js 生态系统是一个愉快的开发环境,将 Fumadocs 移植到其他框架并不像我想象的那么困难。 这也是我的目标,使其不仅适用于 Next.js 开发者,还适用于生态系统中所有使用 SSR 兼容 React 框架的人。
破坏性变更
这是一个小版本发布,除非您依赖 fumadocs-core 的低级 API 而没有使用 fumadocs-ui,否则它不应该破坏任何先前的用法。
Fumadocs Core 现在需要一个 FrameworkProvider。只需用适当的提供者包裹它即可:
import { NextProvider } from 'fumadocs-core/framework/next';
export function Provider({ children }) {
return <NextProvider>{children}</NextProvider>;
}如果您使用 Fumadocs UI,则无需更改。RootProvider 默认包含它,并允许您提供自己的框架:
import { RootProvider } from 'fumadocs-ui/provider/base';
export function Provider({ children }) {
// 现在它不会添加 Next.js 提供者
return <RootProvider>{children}</RootProvider>;
}如果您发现任何公共 API 意外破坏,请报告问题。
编译时间
15.2 还包括了一些针对 Fumadocs 的小型性能改进,Turbopack 启动开发服务器并编译第一个文档页面的时间大约为 2-3 秒。
这一更改还潜在地允许 Fumadocs 在 Vite 上运行,最小 React Router 设置的生产构建在 MacBook 上只需大约 4 秒。
试用
从现有的 Next.js 文档升级:
pnpm update -i -r如果您想尝试 React Router 示例:
pnpm create fumadocs-app未来计划
15.2 不支持 Astro,并且可能不会支持,除非 Astro 提供更好的 React.js 支持。
- Fumadocs UI 布局需要
transition:persist,但是这也会影响其子元素(例如 MDX 内容),导致页面内容在导航后仍然持久化。 - React 上下文无法跨岛屿工作,这会显著改变 Fumadocs 的用法,因此需要重新设计 API。
Fumadocs 将继续以 Next.js 为优先,文档不会更改为泛化其他框架的使用。相反,将为其他框架开发一个新的文档站点(计划中)。
Written by
Fuma Nama
At
Fri Mar 28 2025