YAML
Что такое YAML?
YAML предложил Clark Evans в 2001 году. Ingy döt Net и Oren Ben-Kiki тоже среди первых авторов. Имя значит YAML Ain't Markup Language. Сначала это считалось Yet Another Markup Language, потом название изменили, чтобы сказать, что это не язык разметки. Ключ и значение разделяет двоеточие. Список начинается с тире. Строки одного блока отступают одним числом пробелов. Таб вместо пробела не используют. Docker Compose, GitHub Actions и многие настройки сервера читают этот файл. Сам файл ничего не запускает. Работает программа, которая его читает.
Для чего нужен YAML?
YAML нужен для настройки, которую человек может прочитать. Список, имя и значение лежат в одном файле.
- Записать порт и имя сервера
- Хранить список работы из нескольких шагов
- Записать настройку служб Docker
- Менять один ключ в нескольких средах
Что можно делать с YAML?
В YAML пишут ключ, список и вложенный блок. Он не считает и страницу не рисует. Программа должна читать файл по своему правилу. Неверный отступ втягивает другой блок внутрь, и программа видит другую настройку. Пароль этим файлом в репозиторий не кладут.
Сложно ли освоить YAML?
Написать две строки легко. Трудность в числе пробелов. Когда одна строка отступает меньше или больше, блок ломается. Если смешать таб и пробел, читающая программа останавливается. Одно и то же слово иногда считается текстом, иногда правдой или ложью, иногда числом. Если оставить это случайно, настройка меняется. В JSON скобка показывает место, которое не закрылось. В YAML ошибка тише.
Плюсы и ограничения
Плюс: файл читается коротко, можно писать комментарий, список выглядит тише JSON. Ограничение: ошибка отступа даёт другой смысл. YAML — не JSON и не программа.
Основные понятия
Ключ — имя. Значение — то, что написано этому имени. Отступ говорит, внутри какого блока это лежит.
- Двоеточие отделяет ключ от значения
- Тире — пункт списка
- Пробел считается, таб нет
- Сам файл программу не запускает
Короткий пример
Это пишет имя сервера и его порт. Программу не запускает.
name: nibras port: 8080
Частые вопросы
- YAML и JSON — одно и то же? Нет. Оба могут хранить настройку. JSON использует скобки. YAML использует отступ, и можно писать комментарий.
- YAML — язык программирования? Нет. Работу делает программа, которая читает файл. Сам YAML ничего не запускает.
- Отступ может быть табом? Нет. Отступ пишут пробелами. Таб может остановить читателя.