资讯动态

【Strapi 系列之二】Collection / Single / Component 怎么选?Strapi 字段大全一篇讲透

发布时间:2026/10/14 3:40:20 来源:尧图企业网站定制
Collection / Single / Component 怎么选Strapi 字段大全一篇讲透做 Strapi 项目最容易让人纠结的事情之一就是建模。文章要建成 Collection Type还是 Single Type导航栏和页脚能不能共用一个模型页面里的图片、文字、按钮究竟应该拆成字段还是做成 Component一开始觉得差不多就行等页面多了、内容复杂了才发现模型设计不合理字段重复、数据难维护、前端查询越来越复杂甚至改个公共模块都要折腾半天。这篇文章就把 Strapi 最核心的三种内容结构以及常用字段和 Dynamic Zone 一次讲清楚。示例基于Strapi 5。一、先搞懂三种核心结构Strapi 的 Content-Type Builder 主要提供 Collection Type、Single Type 和 Component 三种结构。它们解决的问题并不一样。1. Collection Type一类内容多个条目适合所有需要持续新增、查询和管理的内容。例如设计公司官网中的文章、项目案例、服务项目Article新闻、博客文章Project设计案例、作品集Service服务项目Team Member团队成员假设你创建一个Article模型字段类型示例titleText如何设计一个好网站slugUIDhow-to-design-a-websitecoverMedia文章封面publishedAtDateTime发布时间categoryRelation技术分享创建完成后就可以不断新增文章而不需要每次创建新的模型。在 Strapi 后台中它通常会表现为一张可管理多条记录的列表。判断标准如果这种内容未来可能有很多条就优先考虑 Collection Type。2. Single Type只有一份的内容Single Type 适合一个站点只需要维护一份的配置或页面。例如首页配置 Home关于我们 About网站设置 Site Setting联系方式 Contact以Site Setting为例字段类型示例siteNameTextMy Design StudiologoMedia网站 LogofaviconMedia浏览器图标footerTextText版权所有contactEmailEmailhelloexample.com这些内容通常不需要维护几十条记录只需要一份当前生效的数据。这里有个容易误解的地方Single Type 不代表只能有一个字段而是这种内容类型只管理一个条目。比如首页可能包含标题、Banner、介绍、推荐项目等多个字段但首页本身仍然可以是 Single Type。不过如果你的网站有多个独立页面或者需要动态创建页面就不应该把所有页面都塞进一个 Single Type。3. Component可复用的字段组合Component 不是独立的内容条目而是一组可以重复使用的字段结构。例如网站里经常出现这样的组合图片 标题 描述姓名 职位 头像按钮文字 跳转链接地址 电话 邮箱如果每个模型都单独创建这些字段不仅重复劳动后续修改也很麻烦。这时就可以创建 Component。例如创建shared.button字段类型labelTexturlTextvariantEnumeration然后在首页、服务页面、文章页面中复用它。Component 还支持两种使用方式Single Component只允许放一个组件实例。Repeatable Component允许放多个相同结构的组件实例。比如一个页面只有一个主按钮可以使用 Single Component如果需要配置多个快捷入口就可以考虑 Repeatable Component。需要注意Component 必须被其他内容类型或组件引用不能像 Collection Type 一样独立创建、管理一批内容。二、Strapi 字段大全常用字段怎么选模型确定之后接下来就是字段设计。字段类型选得合适后续 API 返回的数据也会更符合业务需求。字段类型主要用途使用示例Short Text / String短文本标题、姓名、标签Long Text / Text较长的纯文本简介、备注Rich Text富文本内容文章正文、详细介绍Email邮箱联系邮箱Password密码类数据特定的密码字段UID唯一标识或 URL 标识slugEnumeration固定选项状态、类型Boolean是 / 否是否推荐Integer整数排序值、数量Big Integer大整数较大的整数值Float浮点数评分、测量值Decimal精确小数需要精确小数表达的数值Date日期活动日期Time时间每日营业时间DateTime日期和时间发布时间Timestamp时间戳特定时间记录Media图片、视频、文件封面、附件Relation关联其他内容文章关联分类Component可复用的字段组合按钮、作者信息Dynamic Zone多种组件组成的灵活区域页面内容区JSON灵活的 JSON 数据特殊配置Custom Field扩展字段类型颜色选择器等其中Media、Relation、Component、Dynamic Zone 是 Strapi 建模中比较有特色的字段类型。另外Rich Text 的具体编辑能力和返回结构可能因 Strapi 版本及编辑器配置而不同JSON 虽然灵活但不建议把所有业务数据都装进去否则字段校验和内容管理会变得困难。几个容易选错的字段Text 还是 Enumeration如果内容由编辑人员自由填写使用 Text如果只有几个固定选项例如draft、published、archived可以考虑 Enumeration。Text 还是 UID如果字段需要作为内容的 URL 标识例如/articles/how-to-design优先考虑 UID。实际使用时还要注意标识冲突及修改 URL 后的跳转策略。Relation 还是 Component如果关联对象需要独立管理、被多处引用就更适合 Relation如果只是当前内容的一组固定属性则通常更适合 Component。例如文章的分类适合关联Category而文章中一个只使用一次的提示框可以直接设计成 Component。三、Dynamic Zone为什么它是页面搭建神器假设你要做一个设计公司官网。首页需要 Banner、项目展示、服务介绍关于我们页面需要团队介绍、公司历程服务详情页又需要图片、文字和 FAQ。如果为每种页面创建大量固定字段模型很快就会变得臃肿。例如bannerTitle、bannerImage、serviceTitle、serviceImage、teamTitle……页面越多字段越多。更麻烦的是内容顺序也难以灵活调整。Dynamic Zone 的作用就是允许编辑人员在一个内容区域里自由组合不同类型的 Component并调整顺序。例如创建以下组件sections.hero主视觉区域sections.text-image图文介绍sections.project-list项目列表sections.faq常见问题然后在PageCollection Type 中添加一个 Dynamic Zone 字段sections允许使用以上四种组件。编辑人员就可以按照页面需要组合内容首页Hero → Project List → Text Image → FAQ关于我们Hero → Text Image → FAQ服务详情页Hero → Text Image → Project List → FAQ不必为每种页面创建一套完全不同的字段。需要注意Dynamic Zone 里的组件字段名和类型要保持兼容尤其不要在不同组件中定义同名但类型不一致的字段。Dynamic Zone 适合什么场景适合官网页面搭建、落地页、营销页面、活动页面等内容结构灵活的场景。但它并不是万能的。如果一个内容结构长期固定使用普通字段或 Component 会更清晰如果内容需要独立的查询、分类、权限或复用关系则应考虑单独建模。Dynamic Zone 的自由度越高前端渲染逻辑也越需要做好类型判断。四、实战设计公司官网应该怎么建模假设我们正在开发一个设计公司官网可以先从下面这套结构开始模型类型作用ArticleCollection文章列表ProjectCollection设计案例ServiceCollection服务项目PageCollection可扩展的普通页面HomeSingle首页固定配置Site SettingSingleLogo、页脚、全站配置ButtonComponent公共按钮HeroComponent主视觉模块Text ImageComponent图文模块FAQComponent常见问题模块其中Page可以包含标题、slug 和sectionsDynamic ZoneHome则可以使用固定配置字段也可以包含适量的 Dynamic Zone用于自由组合首页模块。如果FAQ需要在很多页面复用且每个问题需要独立管理那么可以进一步把问题设计成 Collection Type再通过 Relation 关联如果 FAQ 只是页面内部的一组内容Component 通常更简单。建模时不要急着追求复杂。先根据真实业务创建最小可用结构后续再按需要扩展。五、几个建模避坑建议1. 不要把所有东西都建成 Collection。独立内容才值得独立建模简单的字段组合优先考虑 Component。2. 不要把所有页面都建成 Single Type。Single Type 适合唯一内容需要不断新增的页面通常应使用 Collection Type。3. 不要把所有东西都塞进 Dynamic Zone。固定结构优先使用普通字段或 Component只有确实需要灵活排列时才使用 Dynamic Zone。4. 不要忽略字段修改的影响。Strapi 的字段重命名可能涉及旧字段删除和新字段创建已有数据需要提前评估和备份。修改生产模型前务必先在测试环境验证。5. 不要把模型设计和 API 查询割裂开。Relation、Media、Component 和 Dynamic Zone 在 API 查询时可能需要额外配置 populate。模型建得再漂亮如果没有规划好前端所需的数据结构接口调用依然可能很复杂。写在最后记住这四句话基本就能解决大多数 Strapi 建模问题多条独立内容用 Collection Type。全站唯一配置用 Single Type。可复用的字段组合用 Component。需要自由组合、调整顺序的页面模块用 Dynamic Zone。这套思路并不复杂关键是先想清楚内容的业务关系再决定字段怎么组织而不是看到一个字段就急着创建一个模型。下一篇我们继续解决一个实际问题中英双语网站怎么做Strapi i18n 从配置到 API 取数。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑