Next.js 应用路由

👆本指南假设您正在使用 Next.js 应用路由。

视频指南

安装依赖

在您网站的目录中运行:

这将询问您一些设置问题。当提示输入公共资产目录时,输入:public

更新构建脚本

tina init 应该已经更新了您的 package.json 脚本。

如果这些没有被CLI设置,您需要手动应用。

启动 TinaCMS

您可以通过以下命令启动 TinaCMS:

我们推荐使用 pnpm。

TinaCMS 运行后,导航到 http://localhost:3000/admin/index.html

❓ 提示:如果运行此命令时出现错误,请参阅常见错误页面。

此时,您应该能够看到 TinaCMS 管理界面,选择一个帖子,保存更改,并看到更改持久化到本地的 markdown 文件中。

TinaCMS 配置文件

运行 tina init 命令后,创建了一些文件以帮助您快速入门。其中之一是 tina/config.ts 文件。这是一个必需的配置文件,定义了所有的 tina 模式。

它看起来如下:

有关配置的更详细概述,请参阅 使用 TinaCMS 进行内容建模

💡 如果您按照本指南使用 tina init 命令,您可能已经注意到创建了一个 content 和一个 pages 文件夹:
这些可以用作快速参考,但可以安全删除。

创建新帖子

💡 如 tina/config.ts 文件中定义的,我们有一个名为 post 的集合,它将被 TinaCMS 识别并映射到您在 TinaCMS 管理页面中看到的内容。
  1. 前往 /admin/index.html
  2. 点击 Posts
  3. 点击 Create
  4. 输入必填字段
  5. 保存

现在,让我们回去检查创建了什么。您将看到一个 /content 文件夹,其中保存了您的新帖子作为 .md 文件。此路径在 tina/config.ts 文件的 post 集合中定义!

渲染帖子集合

让我们从创建一个 /posts 文件夹开始。这里的页面将列出我们所有的帖子。

文件: app/posts/page.tsx

您可能已经注意到这是一个服务器渲染的页面。根据此页面的生成方式,Next 将会:

  • A. 将其构建为动态/服务器渲染页面
  • B. 将其构建为静态页面。

如何渲染此页面由您决定。

渲染单个帖子

为了使其与 TinaCMS 可视化编辑器一起工作,我们将其分为两个组件。一个将在构建时构建页面,另一个将是一个可以与 TinaCMS 交互的客户端渲染页面。

文件: app/posts/[...filename].tsx

在这里,我们使用 generateStaticParams 将这些页面构建为 SSG。您可以根据需要自由更改此设置。

现在,为了使可视化编辑器工作,我们将创建一个新的“客户端页面”:

文件: app/posts/[...filename]/client-page.tsx

常见问题

页面上的更新未正确反映

在使用 TinaCMS 的 Next.js 项目中使用应用路由时,您可能会遇到 Vercel 过度缓存内容导致某些更新未正确反映的情况。

根本原因是 Vercel 数据缓存 正在缓存来自 TinaCloud 内容 API 的响应。这可以通过查询 GraphQL API 并查找更新的内容,或者检查 Vercel 中缓存的使用情况来确认。

有两种方法可以修改您的网站以最佳地使用 Vercel 数据缓存:

  1. 手动更新路由段的默认重新验证时间。这将导致增量静态生成在运行时重新验证缓存的内容 API 响应时重建页面并更新内容。更多信息请参见:https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate
  2. 向您的查询(TinaCMS 生成的)添加一个额外的参数,例如:
    const response = await client.queries.page({ relativePath: 'pages/home.mdx'}, { fetchOptions: { next: { revalidate: 60 } })})
    这将传递给底层的 fetch 请求。有关 Next.js 如何扩展 fetch 的更多信息,请参见:https://nextjs.org/docs/app/api-reference/functions/fetch

新创建的内容项未出现在页面上

在使用 TinaCMS 的 Next.js 项目中使用应用路由时,您可能会遇到新创建的内容项未立即出现在相应页面上的情况。这种行为通常是由 Next.js 和浏览器采用的激进缓存机制引起的。

为了确保在本地开发期间看到最新的内容,您可以在浏览器的开发者工具中禁用浏览器缓存:

  1. 在浏览器中打开开发者工具(例如,Chrome,Firefox)。
  2. 导航到网络选项卡。
  3. 勾选禁用缓存选项(此设置在开发者工具打开时有效)。



有关 Next.js 中缓存的更详细信息,请参阅 Next.js 官方文档: Next.js 缓存文档

下一步

另请参阅

Last Edited: October 21, 2025