Sanity.io: 정말 좋은 CMS
11699 단어 beginnersprogrammingjavascriptwebdev
헤드리스 CMS
여기에서 Headless CMS의 개념에 대해 배웠습니다. 헤드리스 CMS의 개념은 백엔드만 가져오고 대신 데이터에 대한 API를 ping하는 것입니다.
좋은 Headless CMS 목록을 찾기 시작했지만 그 중 어느 것도 내가 예상한 것만큼 빠르게 설정되지 않았습니다. 그들 중 대부분은 당신이 어딘가에 그것들을 호스팅할 것을 요구했고, 나는 확실히 서버에서 내 물건을 호스팅하기 위해 돈을 쓰고 싶지 않았습니다.
온전성 소개

내 웹 사이트에 적합한 CMS를 검색하는 동안 Benjamin Ashbaugh Slack 작업 공간의 특정 Hack Club's (예, 그가 암소임을 확인할 수 있습니다)이 Sanity라는 특정 CMS에 대해 알려주었습니다. 어디에서든 내 인스턴스를 호스팅할 필요가 없었고 Sanity Studio라는 도구를 통해 정말 쉽게 편집할 수 있었습니다.
그래서 나는 그것을 시도하기로 결정했습니다. 일어날 수 있는 더 나쁜 것은 좋은 경험이 없고 내 인생의 시간을 낭비하는 것입니다 ¯_(ツ)_/¯
가자!

Sanity는 기술을 소개하기에 정말 좋은 자료starter guide를 가지고 있으므로 기본 리포지토리 설정을 위해 다음을 권장합니다.
Sanity Studio와 Content Lake의 차이점
Sanity Studio는 Sanity 자체에서 데이터를 조작하는 데 사용되는 정말 직관적인 도구입니다(Prisma Studio와 유사). Content Lake는 Sanity Studio에서 데이터를 처리하는 데서 오는 데이터 자체입니다. 클라이언트는 Sanity가 제공하는 API에서 Content Lake에 액세스할 수 있습니다.
개요
Sanity Studio를 작동시킨 후에는 아마도 스키마를 생성해야 할 것입니다.
하나의 파일은
schema.js 레이블이 지정되며 스키마의 게이트웨이가 됩니다. 다음은 그 예입니다.// First, we must import the schema creator
import createSchema from "part:@sanity/base/schema-creator";
// Then import schema types from any plugins that might expose them
import schemaTypes from "all:part:@sanity/base/schema-type";
import project from "./project";
// Then we give our schema to the builder and provide the result to Sanity
export default createSchema({
// We name our schema
name: "default",
// Then proceed to concatenate our document type
// to the ones provided by any plugins that are installed
types: schemaTypes.concat([
/* Your types here! */
project,
]),
});
project 가져오기가 정확히 무엇을 하는지 궁금할 수 있습니다. 이것이 우리의 두 번째 파일인 문제의 엔티티의 실제 스키마인 project.js 입니다. 다음은 해당 파일의 예입니다.export default {
name: "project",
type: "document",
title: "Project",
fields: [
{
name: "name",
type: "string",
title: "Name",
},
{
name: "description",
type: "string",
title: "Description",
},
{
name: "demo",
type: "string",
title: "Demo",
},
{
name: "github",
type: "string",
title: "Github",
},
{
title: "Technologies",
name: "technologies",
type: "array",
of: [{ type: "string" }],
},
{
title: "Image",
name: "image",
type: "image",
}
],
};
여기서는 우선 기본 내보내기로 개체를 가져옵니다. 그런 다음
name , type 및 title 를 정의합니다. project.js 파일에서 "document" 임을 지정합니다. 이제 name 와 title 의 차이점이 궁금할 것입니다. 이름은 Sanity가 내부적으로 데이터를 참조하는 방식일 가능성이 높으며 title는 사용자에게 표시되는 방식일 뿐입니다.fields 배열에는 스키마의 여러 필드를 지정하는 여러 개체가 포함되어 있습니다. 스키마 유형에 대한 자세한 내용을 찾을 수 있습니다here.새너티 클라이언트
Content Lake의 데이터에 액세스하기 위해 Sanity용 클라이언트를 사용하겠습니다. 또는 HTTP API 을 사용할 수 있습니다.
Node.js API를 사용할 예정이므로 간단히 설치할 수 있습니다.
npm install @sanity/client
또는
yarn install @sanity/client
그런 다음 원하는 이름으로 원하는 위치에 새 파일을 만들 것입니다(
client.js를 사용하겠습니다).그런 다음 코드를 사용하십시오.
import sanityClient from "@sanity/client";
export const client = sanityClient({
projectId: "PROJECT_ID_PROVIDED_IN_SANITY.JSON",
dataset: "DATASET_PROVIDED_IN_SANITY.JSON"
useCdn: true,
});
여기서는
useCdn:true 를 사용하고 있습니다. 왜냐하면 CDN이 응답 속도가 훨씬 빠르고 무료 계층에서 더 많은 API 호출을 제공하기 때문입니다. 하지만 CDN이 없을 때만큼 빠르게 콘텐츠를 업데이트하지는 않으므로 이 점을 염두에 두시기 바랍니다.그런 다음 콘텐츠를 얻기 위해 다음을 사용할 수 있습니다.
const projects = await client.fetch(
`
*[_type == "project"]
`
);
이것은 기본적으로 "프로젝트"유형을 가진 모든 문서를 선택합니다(예: 이전 예제에서
project.js의 스키마를 따르는 모든 콘텐츠. 그런데 이것을 async 함수에서 실행해야 합니다.Sanity에서 사용하는 쿼리 언어가 궁금하시다면 가이드here와 cheatsheet을 확인하세요.
끝
그래서 그것은 꽤 많이입니다. 왼쪽의 아름다운 패널에 반응을 남겨주세요(또는 아래 댓글)!
트위터에서 나를 팔로우하세요:
GitHub에서 팔로우: https://github.com/ShubhamPatilsd
Reference
이 문제에 관하여(Sanity.io: 정말 좋은 CMS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shubhampatilsd/sanityio-a-really-good-cms-42h9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)