VitePress 链接 CMS
VitePress 是一个静态站点生成器,但它完全可以与无头(Headless)CMS 集成,从而实现非技术人员也能轻松管理网站内容。通过将 VitePress 与 CMS 连接,你可以将内容管理与站点展示分离开来。
基本思路
集成的核心思路是:在构建时(build time),从 CMS 的 API 获取内容,然后使用这些数据生成静态的 Markdown 文件或直接在 Vue 组件中渲染内容。
我们将使用数据加载(*.data.js)功能来实现这一点,这是 VitePress 提供的用于在构建时获取外部数据的理想方式。
示例:集成 Strapi
假设我们正在使用 Strapi 作为我们的 Headless CMS,并且我们有一个名为 articles 的集合类型。
1. 创建数据加载文件
在你的项目中创建一个数据加载文件,例如 docs/articles.data.js。这个脚本将在构建时运行,从 Strapi API 获取文章列表。
注意: 你可能需要处理认证,例如在请求头中添加 API Token。
2. 创建页面来展示内容
现在,创建一个 Markdown 文件 docs/articles.md 来展示我们从 CMS 获取的文章列表。
3. 生成动态路由页面(可选)
对于文章详情页,你可以使用 VitePress 的动态路由功能。你需要修改配置文件,告诉 VitePress 根据从 CMS 获取的数据来生成对应的页面。
一个更简单的方法是,在构建之前运行一个单独的 Node.js 脚本:
- 从 CMS 获取所有文章。
- 为每篇文章动态地创建一个 Markdown 文件(例如
docs/articles/my-first-article.md),文件的内容可以是一个简单的模板,引用一个 Vue 组件来展示文章详情。 - 运行
vitepress build。
优点
- 内容解耦:内容管理者可以在友好的 CMS 界面中工作,而开发者可以专注于代码。
- 卓越性能:最终网站仍然是完全静态的,加载速度快,SEO 友好。
- 安全性:由于没有直接连接到数据库,减少了攻击面。
通过这种方式,你可以结合 VitePress 的开发体验和性能优势,以及 Headless CMS 的内容管理灵活性。