Sanity 入门,开启高效内容管理之路!
Sanity Headless CMS 作为一款功能强大的无头内容管理平台,可以极大提升我们构建内容存储的效率。阅读文本之前您需要先了解一些 Sanity 基本信息,➡️传送门。本文将为您介绍 Sanity 快速入门之路。
⚡️快速入门
跟着官方的教学项目 Day One with Sanity Studio 实操一遍,基本就可以用 Sanity 开发。
🧠 GROQ
GROQ 官方文档列了不少资料,其中 GROQ Query Cheat Sheet 最实用,列举了常用查询语句,不会写的时候查查就好。
简单的查询可以让 AI 🤖 帮忙写,但如果遇到棘手的查询它可能给的答案是错的,这种时候就只能老老实实看文档了🙃。
🌐 国际化
海外工具必做多语言,Sanity 的国际化功能参考官方 Localization 文档就能搞定。
其中提到的 demo-course-platform 强烈建议自己运行一遍。里面基本上已经列举了所有国际化的情况,对做国际化非常有用!
⛰️ 图床
没错 Sanity 还能当图床使用😎,先安装 Sanity Media,然后在 Sanity Studio 配置引入插件。
// sanity.conifg.ts
import { media } from 'sanity-plugin-media'
export default defineConfig({
plugins: [
media(),
// ...
]
// ...
})
🌆 图片处理
通过 @sanity/image-url 可以对图片进行裁剪、调整大小、格式转换等操作。轻松实现图片转 webp,提高图片加载速度。
import imageUrlBuilder from '@sanity/image-url'
const builder = imageUrlBuilder({
baseUrl: 'https://my.custom.domain',
projectId: 'abc123',
dataset: 'production',
})
const urlFor = (source) => builder.image(source)
urlFor('image-928ac96d53b0c9049836c86ff25fd3c009039a16-200x200-png')
.auto('format')
.fit('max')
.width(720)
.toString()
// output: https://my.custom.domain/images/abc123/production/928ac96d53b0c9049836c86ff25fd3c009039a16-200x200.png?auto=format&fit=max&w=720
还可以结合 next-sanity-image 在 next.js 中更加方便使用。
🔒 数据安全
默认情况下 Sanity 数据集(dateset)是公开访问的,也就说如果别人知道你的 projectId 和 dataset 名称就可以请求你所有的数据,非常不安全。《玩转 Sanity Token 认证,保护你的数据安全》这篇文章详细介绍了如何通过 Token 认证保护我们的数据。
🧑💻 代码高亮
先在 Sanity Studio 中安装 @sanity/code-input 插件,然后添加一些代码。
再在客户端展示,下面用 prismjs 代码高亮库当示例。
import React, { useEffect } from "react";
import Prism from "prismjs";
import "prismjs/themes/prism-tomorrow.css"; // code theme
import 'prismjs/components/prism-jsx.min'; // jsx theme
export default function Code({ code, language }) {
useEffect(() => {
Prism.highlightAll();
}, []);
return (
<pre>
<code className={`language-${language}`}>{code}</code>
</pre>
);
}
📹 视频播放
How to add custom YouTube blocks to Portable Text 介绍如何在 Sanity.io 的 Portable Text 中添加自定义的 YouTube 嵌入块,亲测有用。
🔥 项目实战
实战是最重要的,YouTube 上有两个不错的实战视频供参考:
1. Build a Next.js 14 Blog
技术栈:Next.js 14 + React + Sanity + Tailwind + Shadcn/Ui
2. How I use Sanity and Astro to Build Custom Content Management Systems For My Web Design Clients ⭐️
技术栈: Sanity + React + Astro
总之多动手实践,你就可以玩转 Sanity 💪。
喜欢站长