TOML или JSON для описания Web-форм?
Что важнее: скорость или человекочитаемость
Одна страница
Распечатать
Пишу свой framework MLFW, где одной из ключевых идей является разработка через конфигурацию. Поэтому предполагается для описания форм ввода данных использовать какой-нибудь язык сериализации данных для того, чтобы описывать быстро и просто. Когда-то что-то подобное пытался сделать на YAML, но у того обнаружилось слишком много недостатков: и читаемость не очень, и стандарт содержит слишком много неожиданных решений, и в плане эффективности по времени он показывает самые худшие результаты.
Поэтому сейчас выбираю между TOML и JSON. Плюсы JSON — встроенная поддержка в PHP (не нужно ставить сторонние классы) и более высокая скорость работы (к сожалению, данных по PHP не нашёл, но тесты на C++ и Go показывают существенное преимущество), а также единство стиля с другими частями frameworkа (в частности, правила роутинга у меня описываются на JSON). А у TOML, по сути, есть всего один плюс, но весьма существенный: гораздо более простой и удобный синтаксис, на котором описание формы можно сделать существенно быстрее. И вот никак не могу определиться.
Поэтому сейчас выбираю между TOML и JSON. Плюсы JSON — встроенная поддержка в PHP (не нужно ставить сторонние классы) и более высокая скорость работы (к сожалению, данных по PHP не нашёл, но тесты на C++ и Go показывают существенное преимущество), а также единство стиля с другими частями frameworkа (в частности, правила роутинга у меня описываются на JSON). А у TOML, по сути, есть всего один плюс, но весьма существенный: гораздо более простой и удобный синтаксис, на котором описание формы можно сделать существенно быстрее. И вот никак не могу определиться.
Ребята, давайте жить спокойно!
Наткнулся на ещё один подходящий для этих целей файловый формат: NEON (Nette object notation, так как создан авторами шаблонизатора Nette). Внешне похож на YAML, но при этом совместим с JSON (точнее, JSON можно рассматривать как его подмножество). Из недостатков — нет встроенной поддержки в PHP, нужно добавлять в зависимости пакет nette/neon. И, что самое плохое, он требует PHP 8 и выше, в то время, как я хочу оставить обратную совместимость хотя бы с 7.1. Работать с форматом предельно просто:
Neon::encode($value); // Returns $value converted to NEON
Neon::encode($value, true); // Returns $value converted to multiline NEON
Ребята, давайте жить спокойно!
Одна страница
Распечатать У вас нет прав для отправки сообщений в эту тему.