Диего Хаз
Представляем SCM, функциональную и высокопоставленную библиотеку для создания схем в JavaScript и Node.js
Я работал с HTML, CSS и JavaScript с 2002 года. Первый раз, когда мне нужна была какая-то схема в JavaScript было всего несколько лет назад.
После использования многих различных библиотек и даже авторитет один и другой Я решил создать шм . Это результат всего моего опыта с схемами в JavaScript.
Что такое SCM?
шм Является ли группа пакетов NPM, чтобы помочь разработчикам иметь дело с схемами в JavaScript и Node.js.
Это очень вдохновлено Мангусты схемы . На самом деле, они настолько похожи, что вы можете использовать шм Параметры внутри мангусты схемы и наоборот. Это не монгодб, специфичный, хотя. Вы можете использовать его для всего в JavaScript.
Какие проблемы решают SCM?
? Разбор и валидация ценностей формы
На клиенте вы можете использовать схемы для определения моделей для HTML-форм. Это облегчает преобразование и проверку значений. Кроме того, если вы используете Node.js на сервере, вы можете использовать ту же схему. Результатом является последовательное поведение между клиентом и проверками сервера.
? Разбор и валидация строки запроса
Рассмотрим следующую строку запроса: /? термин = John & Page = 2 & limit = 10 Отказ Комбинируя пакеты, такие как SCM-KOA , SCHM-Express и/или SCHM-Mongo , вы сможете проанализировать и проверять строки запросов с помощью поисковых терминов с легкостью.
☊ Связь между клиентом и сервером
Если у вас есть приложение, которое потребляет ресурсы из API для отдыха, например, вы можете использовать схемы для определения, на клиенте, структура объекта Ваш клиент рассчитывает получать с сервера. Если что-то изменяется на сервере (недвижимость, например, переименованы, например), вы можете просто обновить свою схему, чтобы все ваше приложение будет продолжать работать.
Создание схемы
Простая схема – это просто карта клавиш и типов:
Это то же самое, что используя Тип имущество:
Схема также может быть картой между ключами и значениями по умолчанию. Типы будут автоматически выведены:
Это эквивалентно выполнить следующее:
Чтобы узнать больше о том, как писать схемы, посмотрите на Мангусты схемы Отказ
Разборные значения
После определения схемы вы можете использовать его для разбора значений. Этот процесс преобразует значения в нужные типы, а также нанесение других парсеров, определенных в схеме. Это доступные парсеры: Тип , дефолт , Установить , Получить , отделка , заглавные буквы , строчные Отказ
Вывод будет что-то вроде этого:
{ name: "HAZ", birthdate: Tue Apr 10 1990 00:00:00 GMT,}Проверяющие значения
Как и в Мангусты схемы , вы можете определить правила проверки в ваших схем. Это доступные валидаторы: проверить , Требуется , соответствие , Enum , Макс , мин , Maxlength , Minlength Отказ
Вы также можете создавать пользовательские парсеры и валидаторы, расширяя схему. Мы поговорим об этом позже в этой статье.
Ошибка проверки будет по умолчанию, массивом объектов, описывающих ошибки.
[ { message: "age must be greater than or equal 18", min: 18, param: "age", validator: "min", value: 17, }]Если проверка проходит, она вернет анализируемые значения, как Разбор () Отказ
Сочинение нескольких схем
Скажем, у вас есть отдельные схемы, описывающие Тело , Личность и другие вещи, и хотите составить их построить человек схема Это так же просто, как это звучит:
Еще один способ сочинить схемы через гнездо. Схема может быть использована в качестве Тип В другой схеме:
Расширение схем
Это часть, где шм действительно сияет. Вы можете добавить пользовательские парсеры и валидаторы или даже заменить поведение по умолчанию анализ и проверить Методы, создавая группы схем.
А Группа схемы это функция, которая получает предыдущую схему как единственным аргументом. Кроме предыдущего Пармы , Парсер и валидаторы Объект схемы имеет слияние Метод, который полезен для групповых функций схемы, чтобы объединить новые функции в предыдущие схемы.
Вывод вышеуказанного фрагмента будет что-то вроде этого:
{ name: "Haz!!!", age: 27,}Если вы хотите пойти дальше и узнать больше о том, как создавать пользовательские парсеры, посмотрите, как парсер написаны в основной библиотеке здесь Отказ
Расширяя схемы, мы можем создать много видов вещей. Вот как большинство из шм Спутниковые библиотеки, такие как SCM-Translate , SCM-Computed и SCHM-Mongo , написаны.
Мы собираемся поговорить о одном из них сейчас.
Переименование значений клавиш
SCM-Translate является одним из самых простых, но мощных, спутниковых библиотек шм Отказ Это несколько больше, чем 10 строк кода сжатый в одну функцию, которая позволяет переводить значения клавиш в ваши клавиши схемы.
Скажем, вы работаете над веб-парном, который потребляет ресурсы из API отдыха. Внезапно разработчики меняют вещи на API, что заставляет тело ответа вернуть немного другой модели, чем ожидаемый клиент. Вместо Email Собственность, возвращается сейчас массив Письма Отказ
Это, вероятно, сделает ваше приложение, чтобы сломаться. Если у вас нет схемы или любого другого централизованного способа обрабатывать этот объект, вам нужно будет обновить каждую часть приложения, чтобы соответствовать изменениям сервера.
С шм и SCM-Translate , его можно решить, изменив несколько строк кода только в одном месте:
Вывод будет именно то, что ваше приложение ожидается до изменения:
{ name: "Haz", email: "hazdiego@gmail.com",}Нажмите здесь, чтобы увидеть список всех пакетов
Как это отличается от других библиотекх схем?
Общий вопрос – это разница между шм и другие библиотеки, такие как Джой и AJV (который следует JSON SCHEMA Спецификация).
По сравнению с ajv. , шм не следит за каким-либо конкретным спецификацией. Вместо этого он пытается имитировать API схемы мангусты. Также, хотя AJV Имеет некоторые функции разборки, они ограничены значения по умолчанию и Тип принуждения Отказ
В шм , Возможность разбора ценностей на основе схемы, является то, что позволяет преобразовать строку запроса в запрос MongoDB, например.
Что сказал, оба Джой и AJV можно комбинировать с шм Отказ Вы можете легко расширить его, чтобы использовать другой метод валидации:
Спасибо за чтение этого!
Если вам это нравится и найти его полезным, вот некоторые вещи, которые вы можете сделать, чтобы показать свою поддержку:
- Нажмите на хлопок? Кнопка на этой статье несколько раз (до 50)
- Дайте звезду ⭐️ на Github: https://github.com/diegohaz/schm
- Следуй за мной на Github: https://github.com/diegohaz.
- Подпишись на меня в Твиттере: https://twitter.com/diegohaz
Оригинал: “https://www.freecodecamp.org/news/how-to-write-powerful-schemas-in-javascript-490da6233d37/”