@astrojs/ preact
这个 Astro 集成 可以为你的 Preact 组件提供服务器端渲染和客户端水合(hydration)功能。
为什么选择 Preact?
段落标题 为什么选择 Preact?Preact 是一个允许你构建适用于网络的交互式 UI 组件的库。如果你想使用 JavaScript 在你的网站上构建交互式功能,你可能更喜欢使用它的组件格式,而不是直接使用浏览器的 API。
如果你之前使用过 React,Preact 也是一个很好的选择。Preact 提供与 React 相同的 API,但打包体积更小,仅为 3kB。它甚至支持通过 compat 配置选项来渲染许多 React 组件(见下文)。
在使用这个集成之前,想要了解更多关于 Preact 的信息吗?
可以查看他们网站上的 “在 10 分钟内学习 Preact” 互动教程。
安装
段落标题 安装快速安装
段落标题 快速安装astro add
命令行工具可以自动化为你安装。在新的终端窗口中运行以下命令之一。(如果你不确定你正在使用哪个包管理器,运行第一个命令。)然后,按照提示操作,在终端中输入“y”(表示 “yes”)来确认每一个步骤。
如果遇到任何问题,请随时在 GitHub 留言 并尝试以下的手动安装步骤。
手动安装
段落标题 手动安装首先,使用你的包管理器安装 @astrojs/preact
包。如果你使用的是 npm 或者不确定,可以在终端中运行以下命令:
大多数包管理器会一并安装相关的 peer 依赖。然而,如果在启动 Astro 时看到”找不到包 preact
“(或类似)的警告,你将需要安装 Preact:
然后,将这个集成应用到你的 astro.config.*
文件中,使用 integrations
属性:
使用
段落标题 使用要在 Astro 中使用你的第一个 Preact 组件,请前往我们的 UI 框架文档。你将会了解到:
- 📦 如何加载框架组件
- 💧 客户端水合选项
- 🤝 将不同框架混合和嵌套在一起的机会
还可以查阅我们的 Astro 集成文档 以获取更多关于集成的信息。
配置
段落标题 配置Astro Preact 集成处理了 Preact 组件的渲染,并具有自己的选项。你可以在 astro.config.mjs
文件中修改这些选项,这是你的项目集成设置所在的地方。
对于基本用法,你无需配置 Preact 集成。
兼容
段落标题 兼容你可以启用 preact/compat
,这是 Preact 的兼容层,用于在不需要安装或将 React 的较大库发送到用户的网络浏览器的情况下渲染 React 组件。
要实现这一点,向 Preact 集成传递一个对象,并设置 compat: true
。
当启用了 compat
选项后,Preact 集成将会在你的项目中渲染 React 组件和 Preact 组件,同时还允许你在 Preact 组件中导入 React 组件。在 Preact 网站的“从 React 切换到 Preact”页面中可以阅读更多信息。
当导入 React 组件库时,为了将 react
和 react-dom
的依赖替换为 preact/compat
, 你可以使 overrides
来实现。
可以查阅pnpm
overrides 和 yarn
resolutions 的文档,了解它们各自的覆盖功能。
目前,compat
选项只适用于 React 库,将代码以 ESM 的形式导出。如果在构建时出现错误,请尝试将该库添加到你的vite.ssr.noExternal: ['the-react-library']
的 astro.config.mjs
文件中。
选项
段落标题 选项组合多个 JSX 框架
段落标题 组合多个 JSX 框架当你在同一个项目中使用多个 JSX 框架(React、Preact、Solid)时,Astro 需要确定每个组件应该使用哪个 JSX 框架的转换器(transformation)。如果你只向你的项目中添加了一个 JSX 框架集成,那么就不需要额外的配置。
使用 include
(必填)和 exclude
(可选)配置选项来指定哪些文件属于哪个框架。为你使用的每个框架提供一个文件或/和文件夹数组。通配符可用于包含多个文件路径。
我们建议将每个框架的组件放在同一个文件夹中(例如 /components/react/
和 /components/solid/
),以便更容易地指定你的包含内容,但这不是必需的:
示例
段落标题 示例- 在 Astro Preact 示例 中展示了如何在 Astro 项目中使用交互式的 Preact 组件。
- 在 Astro Nanostores 示例 中展示了如何在 Astro 项目中在不同组件之间共享状态,甚至可以跨不同框架共享状态。
故障排查
段落标题 故障排查如果需要帮助,请访问 Discord 上的 #support
频道。我们友好的支持团队成员将在那里帮助你!
你也可以查阅 Astro 集成文档 获得更多集成信息。
贡献
段落标题 贡献这个包由 Astro 的核心团队维护。欢迎你提交 issue 或 PR!
更新日志
段落标题 更新日志查看 CHANGELOG.md 了解此集成的更改历史。