Backend Intermediate TypeScript

Payload CMS - Next.js 原生 CMS

开源 Next.js 原生 CMS,可直接在 /app 目录安装,提供完整 TypeScript 后端和管理面板,可作 Headless CMS 或应用框架

cmsbackendtypescript

什么是 Payload CMS?

Payload CMS 是第一个可以直接运行在 Next.js /app 目录的 CMS。它既是应用框架,也是 Headless CMS,让你可以拥有完整的 TypeScript 后端和管理面板。

核心理念:不再是” CMS + 你的 Next.js 应用”,而是” Payload 就是你的 Next.js 应用”。

安装

pnpx create-payload-app@latest

新手推荐使用 website 模板:

pnpx create-payload-app@latest -t website

核心概念:Collections

Collections 是 Payload 的核心,类似于传统数据库的表:

import { buildConfig } from 'payload';

export default buildConfig({
  collections: [
    {
      slug: 'posts',
      fields: [
        { name: 'title', type: 'text', required: true },
        { name: 'content', type: 'richText' },
        { name: 'publishedAt', type: 'date' },
        { name: 'author', type: 'relationship', relationTo: 'users' },
      ],
    },
    {
      slug: 'users',
      auth: true,
      fields: [
        { name: 'name', type: 'text' },
      ],
    },
  ],
});

字段类型

字段类型说明
text单行文本
richTextLexical 富文本编辑器
number数字
checkbox布尔值
date日期
relationship关联(支持多对多)
blocksBlock 布局块
upload文件/媒体上传

访问控制

const posts = {
  slug: 'posts',
  access: {
    read: () => true, // 公开读取
    create: ({ req }) => req.user?.role === 'admin',
    update: ({ req, doc }) => req.user?.id === doc.author.id,
    delete: ({ req, doc }) => req.user?.role === 'admin',
  },
};

一键部署

平台特点
VercelNext.js 前端 + Neon 数据库 + Vercel Blob
Cloudflare WorkersWorkers + R2 + D1
自托管Docker 或任意 Node.js 环境

最佳实践

  1. 从 website 模板开始:包含所有功能的完整示例
  2. 善用 Access Control:字段/文档级别的权限控制
  3. Block 字段做布局:用 blocks 字段构建灵活的页面布局
  4. 利用 Server Components:直接在组件里查询,无需 API 调用

参考