<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Sanity on ServDigest — 数字服务诚实评测</title>
		<link>https://servdigest.com/zh/tags/sanity/</link>
		<description>Recent content in Sanity on ServDigest — 数字服务诚实评测</description>
		<generator>Hugo</generator>
		<language>zh</language>
		
		
		
		
			<lastBuildDate>Sun, 12 Jul 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://servdigest.com/zh/tags/sanity/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Sanity CMS：开发者钟爱的内容编辑器</title>
				<link>https://servdigest.com/zh/reviews/sanity-cms/</link>
				<pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://servdigest.com/zh/reviews/sanity-cms/</guid>
				<description>&lt;p&gt;Sanity 是挪威的无头 CMS，成立于 2015 年。与竞品的主要区别：内容是结构化数据，而非 HTML 块。开发者在代码中描述模式，编辑者在实时协作管理后台中填充内容，内容查询使用 GROQ — Sanity 自有的查询语言。&lt;/p&gt;&#xA;&lt;p&gt;官网：&lt;a href=&#34;https://www.sanity.io&#34;&gt;sanity.io&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;架构&#34;&gt;架构&lt;/h2&gt;&#xA;&lt;p&gt;Sanity 在根本层面上分离了内容和展示。内容存在于 Sanity Content Lake — 通过 API 访问的云端存储。管理后台（Sanity Studio）是一个 React 应用，可以随意定制并托管在任何地方。&lt;/p&gt;&#xA;&lt;p&gt;内容模式在 JavaScript/TypeScript 文件中描述。你定义字段、类型、验证、关联 — Studio 自动识别模式。模式的更改与 Studio 代码一起部署 — 基于 Git 的工作流，无需 GUI 配置器。&lt;/p&gt;&#xA;&lt;h2 id=&#34;groq--查询语言&#34;&gt;GROQ — 查询语言&lt;/h2&gt;&#xA;&lt;p&gt;GROQ（Graph-Relational Object Queries）类似 GraphQL，但针对文档操作进行了优化。它可以在一个查询中查询嵌套结构、过滤、聚合和转换数据。示例：&lt;/p&gt;&#xA;&lt;div class=&#34;code-block&#34;&gt;&#xA;    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;&#xA;      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;&#xA;    &lt;/button&gt;&#xA;    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-groq&#34; data-lang=&#34;groq&#34;&gt;*[_type == &amp;#34;post&amp;#34; &amp;amp;&amp;amp; publishedAt &amp;lt; now()] | order(publishedAt desc) {&#xA;  title,&#xA;  &amp;#34;slug&amp;#34;: slug.current,&#xA;  &amp;#34;author&amp;#34;: author-&amp;gt;name,&#xA;  &amp;#34;related&amp;#34;: *[_type == &amp;#34;post&amp;#34; &amp;amp;&amp;amp; references(^._id)]{title}&#xA;}[0...10]&lt;/code&gt;&lt;/pre&gt;&#xA;  &lt;/div&gt;&lt;p&gt;功能强大，但需要时间适应。熟悉 GraphQL 的开发者一两天内即可掌握。&lt;/p&gt;</description>
			</item>
			<item>
				<title>Strapi vs Sanity：2026 年无头 CMS 的对决</title>
				<link>https://servdigest.com/zh/comparisons/strapi-vs-sanity/</link>
				<pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
				<guid>https://servdigest.com/zh/comparisons/strapi-vs-sanity/</guid>
				<description>&lt;p&gt;Strapi 和 Sanity 在 2026 年共同占据无头 CMS 的榜首位置。两个平台都是开源的，都能构建不绑定前端的内容 API。但它们的理念差异如此之大，以至于选择哪个不是&amp;quot;哪个更好&amp;quot;的问题，而是&amp;quot;哪个适合你的团队&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;官网：&lt;a href=&#34;https://strapi.io&#34;&gt;strapi.io&lt;/a&gt; 和 &lt;a href=&#34;https://sanity.io&#34;&gt;sanity.io&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;架构差异&#34;&gt;架构差异&lt;/h2&gt;&#xA;&lt;p&gt;Strapi 是一个部署在自己服务器上的 Node.js 应用。数据库（PostgreSQL/MySQL）由你控制。内容存储在你的数据库中。管理后台是这个应用的一部分。&lt;/p&gt;&#xA;&lt;p&gt;Sanity 是 Content Lake + Studio。Content Lake 是 Sanity 管理的云端内容存储。Studio 是你定制并单独托管的 React 应用。数据存储在 Sanity 的云端，而不是你的数据库中。这免去了你对备份、扩展和存储运行时间的管理责任，但产生了对供应商的依赖。&lt;/p&gt;&#xA;&lt;p&gt;核心问题：你是想完全掌控数据（Strapi），还是愿意将数据信任给 Sanity 的云端以换取零运维？&lt;/p&gt;&#xA;&lt;h2 id=&#34;内容建模&#34;&gt;内容建模&lt;/h2&gt;&#xA;&lt;p&gt;Strapi：通过 GUI 管理后台创建内容类型。拖拽字段，选择类型，保存。底层自动生成模型和迁移。可以用 JavaScript/TypeScript 代码扩展。方法：GUI 优先，代码其次。&lt;/p&gt;&#xA;&lt;p&gt;Sanity：模式在代码中描述（JavaScript/TypeScript）。你编写字段定义、验证、关联 — Studio 自动识别模式。方法：代码优先，GUI 反映代码。&lt;/p&gt;&#xA;&lt;p&gt;开发者通常更喜欢 Sanity 的方法（模式在代码中 = Git 版本控制）。内容编辑者通常更喜欢 Strapi（可以用鼠标添加字段，不需要打扰开发者）。实际中，团队往往根据主导方选择：开发者主导（Sanity）还是内容经理主导（Strapi）。&lt;/p&gt;&#xA;&lt;h2 id=&#34;api-与查询&#34;&gt;API 与查询&lt;/h2&gt;&#xA;&lt;p&gt;Strapi：开箱即用的 REST 和 GraphQL。过滤、排序、分页 — 标准、可预测。GraphQL 模式根据内容类型自动生成。&lt;/p&gt;&#xA;&lt;p&gt;Sanity：GROQ（自有查询语言）和 GraphQL。GROQ 在处理文档方面比 GraphQL 更强大：按链接 join、条件字段、带过滤的投影。但需要学习。GraphQL 也受支持，但 Sanity 社区更偏爱 GROQ。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
