同页混用多个框架
这个站点用 Astro 搭建,而 Astro 的岛屿架构允许同一个静态页面里放多个框架的组件。 下面两个示例跑在同一页:上面是 Vue 3,下面是 React 19,各自只在自己的 JS 到达时才水合。
Vue 组件
Section titled “Vue 组件”这是一个真实的 Vue 组件:构建时预渲染成 HTML,滚动到可见时才水合,所以首屏没有它也能看。
React 组件
Section titled “React 组件”这是一个真实的 React 组件,和上面的 Vue 组件跑在同一页里:两边各自带着自己的运行时, 但都只在滚动到可见时才下载自己的 JS。
为什么这件事值得验证
Section titled “为什么这件事值得验证”文档站要长期服务于 CMS、Vue 组件、React 组件、IM、小程序等多个项目。 如果每个项目各自选一个文档框架,就要维护多套主题、多套搜索、多个部署; 而它们能否合并成一套,取决于「一个静态站能不能真的同时跑多个框架的示例」。
- VitePress 只认 Vue,React 示例只能退回静态截图或 iframe。
- Docusaurus / Nextra / Fumadocs 只认 React,Vue 示例同理。
- Astro + Starlight 通过
@astrojs/vue、@astrojs/react、@astrojs/svelte并存解决这件事, 代价是每个框架各自带一份运行时 —— 但只下载页面里真正用到的那些。
什么时候不该这么做
Section titled “什么时候不该这么做”页面里混两个框架不是免费的:每多一个框架就多一份运行时下载。 所以本站的约定是 一个产品页只用它自己那个框架,只有这一页(以及架构说明)才是刻意混用。

