Англійська для розробників Sanity CMS

Словник для розробників, які використовують Sanity, платформу структурованого вмісту — схеми, запити GROQ, озеро вмісту і співпрацю в реальному часі — для міжфункціональних команд, що працюють англійською мовою.

Sanity позиціонує себе як «структуровану платформу контенту», а не традиційну CMS — контент зберігається в хостованій базі даних в реальному часі (озеро контенту) і запитується за допомогою власної мови запитів, GROQ. Оскільки Sanity має справді відмінні концепції від типової CMS, і тому що команди контенту і інженери працюють в Sanity Studio щодня, точний англійський словник уникає багато крос-функціональної плутанини. Цей посібник містить умови.


Фундаментальні поняття

** Структурований вміст ** — вміст, що моделюється як дискретні, типовані поля (а не один великий HTML- об’ єкт), отже, один і той же вміст може відображатися по- різному у мережі, мобільному пристрої та інших каналах. “Оскільки наші описи продуктів є структурованим вмістом, а не сирим HTML, ми можемо відтворювати ті ж дані, що і веб-сторінка, екран програми або електронна пошта — без дублювання чого-небудь.”

** Content lake ** — хостований, в реальному часі, склад даних Sanity, де зберігається весь ваш вміст, доступний з будь-якого місця за допомогою API. “Кожна редагування негайно потрапляє в озеро контенту — якщо два редактори мають відкриту студію, вони бачать зміни один одного в реальному часі.”

Sanity Studio — відкритий, налаштовуваний інтерфейс адміністратора, де редактори створюють і керують вмістом; це програма React, яку можна розширити за допомогою нетипових компонентів вводу.

“Ми створили нетиповий компонент вводу у Studio для нашого поля таблиці цін — типовий редактор масиву не надавав редакторам достатньо чіткого перегляду.”


Схема і контент моделювання

Тип схеми

** Тип схеми ** визначає форму документа або об’ єкта — його поля, правила перевірки і те, як він буде показано у Studio.

“Ми визначили новий тип схеми caseStudy з посиланням на поле назад до client, тому редактори можуть пов’язати дослідження з правим записом клієнта.”

Document

** Документ ** — це частина вмісту верхнього рівня, яку можна опублікувати незалежно, на зразок статті у блогу або продукту, кожна з яких має свій ідентифікатор і історію редагування.

Reference

Поле ** посилання ** посилається на один документ іншого документа (наприклад, на статтю у блогу, яка посилається на документ автора), зберігаючи вміст документа нормальним, а не дублюючи його.

“Замість переписування біографії автора в кожному пості, ми використовуємо поле посилання, яке вказує на єдиний author документ — оновлення біографії, як тільки вона оновлюється всюди.”

Портативний текст

** Portable Text ** — це формат багатого тексту, заснований на JSON, розроблений Sanity, призначений для відтворення у будь- якій платформі або каналі, на відміну від HTML, який пов’ язано з мережею.

“Оскільки наш вміст тіла є Portable Text, а не HTML, те саме поле відображається правильно на нашому сайті Next.js, нашому React Native програмі, і наших шаблонах електронної пошти.”


Запитування за допомогою GROQ

** GROQ (Graph- Relational Object Queries) ** — власна мова запиту Sanity, розроблена для фільтрування, з’ єднання і проектування структурованого вмісту у єдиний експресійний запит.

“Запит GROQ об’ єднує запис у блогу з його автором і категорією в одному обхідному шляху — не потрібні окремі виклики API.”

** Проекція ** — частина запиту GROQ, яка визначає, які поля (і вкладені посилання) буде повернено у відповіді.

“Ми скоротили проекцію до лише тих полів, які дійсно відображає домашня сторінка — це значно зменшило розмір корисної інформації.”

** Dataset ** — названий, ізольований екземпляр вашого вмісту (зазвичай production і staging ), який надає вам змогу перевіряти зміни у схемі без втрати реального вмісту.

  • “Ми спочатку перевірили нове поле схеми на наборі даних перевірки, а потім перенесли його до виробництва, коли переконались, що нічого не пошкоджено.” *

Редактор і співавтор

** Співпраця у реальному часі ** — декілька редакторів можуть працювати над одним і тим же документом одночасно, бачити курсори і зміни один одного у реальному часі, подібно до спільного редактора документів.

“Двоє авторів редагували одну і ту ж сторінку одночасно, і жоден з них не переписав роботу іншого — Sanity об’єднує зміни в реальному часі.”

** Чернетка і опубліковані стани ** — кожен документ може мати неопубліковану чернетку разом з опублікованою версією, що надає змогу редакторам працювати над змінами без впливу на поточний сайт.

“Чорновий варіант має три нові абзаци, які маркетингова команда все ще переглядає — опублікована версія, яку бачать клієнти, ще не змінилася.”

** Випуск вмісту ** — спосіб групування декількох змін документа разом і опублікування їх всіх одночасно, корисний для скоординованого випуску багатьох частин вмісту.

“Ми об’єднали нову сторінку з цінами, оновлені ЧЗВ і копію банера в одну сторінку, тому вони всі будуть доступні разом о 9 ранку.”


Розповідь про віруючих

SituationPhrase
Explaining structured content’s value”Because the content is structured rather than one HTML blob, we can reuse the same product data across the website, the app, and our marketing emails.”
Describing draft/published separation”Your changes are saved as a draft immediately, but customers won’t see them until you explicitly publish.”
Justifying GROQ over REST”One GROQ query gets us the post, its author, and its category together — with REST we’d need three separate round trips.”
Explaining real-time collaboration”You can both be in the same document at once — Sanity will merge your changes instead of one of you overwriting the other.”

Поширені помилки

  • Виклик Portable Text « просто JSON » — це структурований формат збагаченого тексту з визначеною специфікацією для відтворення, а не довільний JSON.
  • Сказати «CMS база даних», коли більш точним терміном Sanity є ** content lake ** — це специфічний, в реальному часі, сховище даних, а не загальна база даних.
  • Посилання на будь-який запит контенту як «GraphQL» — рідна мова запиту Sanity — GROQ; GraphQL доступний як окремий, додатковий шар API.

Практичні вправи

  1. Поясніть двома реченнями, чому структурований вміст дозволяє відтворювати ті ж дані по- різному у різних каналах.
  2. Написати коротке повідомлення редактору вмісту, у якому буде пояснено відмінність між чернеткою і опублікованим документом.
  3. Створити коментар перегляду коду, у якому буде запропоновано обмежити проекцію GROQ лише полями, які дійсно використовуються на сторінці.

Зв’язані ресурси

Переклади: «Переклад з німецької мови»

Сила Sanity полягає в його здатності полегшити чітке спілкування між різними командами - ключовий елемент, коли справа доходить до різних рівнів володіння рідною англійською мовою. Це не просто знати визначення таких термінів, як «schema» або «GROQ», але розуміти, як вони використовуються в робочому потоці, і, що важливо, як ви будете сформулювати свої наміри для інших. Багато розробників спочатку зосереджуються на прямих перекладах з їхньої першої мови, що може призвести до неоднозначності і непорозумінь. Наприклад, розробник, звиклий до більш багатослівного підходу, може інстинктивно описати складний запит як «відновлення всіх даних, пов’язаних з…», коли коротка фраза, наприклад, «відновлення вмісту з цим запитом GROQ» є набагато ефективнішою в контексті Sanity.

Ключова відмінність часто полягає в очікуваному рівні деталізації і неявному розумінні в команді. У перегляді коду, наприклад, отримання коментаря на кшталт «Цей запит здається неефективним» потребує ретельного розпакування. Це не обов’ язково звинувачення; це може бути справжнім спостереженням про продуктивність або пропозицією щодо оптимізації. Продуктивна відповідь не просто “Все гаразд”, а “Я розглядав використання [альтернативної техніки], щоб поліпшити початковий час завантаження, але я віддав перевагу швидкості, тому що…” - демонструючи розуміння того, * чому * поточний підхід був обраний і визнаючи потенційні проблеми. Аналогічно, в розмовах Slack при обговоренні опису PR, ясність є найважливішою. Неясного опису, наприклад, «Оновлений вміст» недостатньо; замість цього «Вреалізовані зміни схеми для сторінок продукту, включаючи нові зображення і оновлення метаданих за допомогою GROQ» повідомляє точно, що було зроблено і чому це важливо для більшого проекту.

Крім того, активне формулювання — запитання прояснюючих питань, а не припущення розуміння — є безцінним. Замість того, щоб пасивно приймати пропозицію, запитайте: «Чи можете ви розібратися, що ви маєте на увазі під «оптимізацією цього запиту»?» або «Чи можете ви показати мені приклад того, як цей підхід виглядає в GROQ?». Ці невеликі зміни в спілкуванні можуть значно зменшити тертя і поліпшити співпрацю. Не бійтеся ввічливо запитати про контекст; це набагато краще, ніж боротися з немовленими припущеннями.

Ось простий приклад використання інтерфейсу командної рядки Sanity для демонстрації отримання вмісту:

sanity fetch-one --id product/12345

Ця команда, коли її пояснюють, є чимось більшим, ніж просто буквальною дією отримання елемента — це доступ до певної частини структурованого вмісту у озері вмісту Sanity на основі його унікального ідентифікатора. Це невеликий фрагмент, але він ілюструє, як навіть здавалося б прості команди потребують чіткої артикуляції і розуміння в рамках більш широкого процесу розробки.

Поширені запитання

Про що ця стаття "Англійська для розробників Sanity CMS"?

Словник для розробників, які використовують Sanity, платформу структурованого вмісту — схеми, запити GROQ, озеро вмісту і співпрацю в реальному часі — для міжфункціональних команд, що працюють англійською мовою.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Англійська для розробників Sanity CMS"?

Приблизно 10 min.