Недавно ко мне обратился клиент по поводу javascript-приложения для «финансовой оценки» на их сайте Wordpress, которое больше не работает. У него было множество проблем, и в конце концов проще всего было его восстановить.
В этом приложении пользователи могут вводить основную финансовую и личную информацию, и приложение сообщает им, находятся ли они на правильном пути с точки зрения финансового планирования. Это не сверхсложная логика, но ее довольно много.
Я не фронтенд-разработчик. Мне удобнее всего на бэкэнде. Но я реализовал проекты на Vue, Angular, React... Они работают, но я им не до конца доверяю. И по прошествии месяцев и лет у меня всегда возникает растущее беспокойство по поводу того, насколько устарели зависимости, включая саму цепочку инструментов разработки.
Gleam — это удобный язык для создания типобезопасных и масштабируемых систем!
~ Сайт Gleam
Я был в восторге от Gleam с тех пор, как они впервые объявили, что первая версия готова к производству. Его функциональный стиль, неизменяемость, исчерпывающее сопоставление с образцом, вывод типов и простота, стабильность Go означали, что Gleam поразил все мои лучшие места.
Система типов в значительной степени гарантирует, что если ваш код скомпилируется, он будет работать. Я еще не встречал в своем коде Gleam ошибки, которая не была бы версией «мне плохо, я забыл закончить это реализовать».
Gleam был создан для работы на BEAM (легендарной, проверенной в боях виртуальной машине Erlang), но у него также есть цель компиляции Javascript. Это означает, что его можно легко отправить на Node и в браузер.
Lustre — это выдающаяся интерфейсная платформа Gleam. Это верный порт Elm в экосистему Gleam, в котором реализована архитектура управления состоянием Elm «Модель -> Просмотр -> Обновить».
Это значительно более простая концептуальная модель, чем другие интерфейсные фреймворки. Вместо того, чтобы предлагать управление состоянием в качестве дополнительной библиотеки (я смотрю на вас, Redux), модель управления состоянием Lustre является его сердцем.
Вы просто описываете каждый глагол, который может использоваться для изменения состояния вашего приложения, и сопоставляете этот глагол с типобезопасной чистой операцией, которая возвращает обновленную версию модели. Функции представления (также чистые) вытекают непосредственно из состояния этой унитарной модели.
Lustre также предоставляет систему управляемых эффектов, поэтому даже в случае сбоя различных операций ввода-вывода код вашего приложения может быть реализован с использованием полностью чистых функций.
Что интересного в чистых функциях? Они гарантированно всегда обеспечивают один и тот же результат при одних и тех же входных данных. Это делает их предсказуемыми, простыми в тестировании и чрезвычайно стабильными. Чистые функции не ломаются. Они математически не могут.
Приложения Lustre могут включать немного больше шаблонов для настройки приложения, создания всех типов и тому подобного. Но ...
Никогда не существовало более подходящей концепции, к которой применялся бы термин «шаблон». Это дает мне такое же чувство уверенности, которое я получаю, забивая заклепку в стальной лист. Оказавшись на месте, эта штука уже никуда не денется.
Мне сложно выразить, насколько это отличается от моего предыдущего опыта работы с JavaScript. В моем приложении могло бы быть меньше LOC, если бы я делал его в другой среде. Но поверю ли я, что он не сломается? Было бы это так же просто понять?
Я отправил свое приложение вовремя и в рамках бюджета. Клиент действительно доволен этим. И я сплю спокойно, зная, что этот проект действительно сделан.
Мало того, он комфортно живет в Wordpress из всех мест. Я сделал шорткод для загрузки скомпилированных ресурсов, поместил его на страницу и все.
Пакет JS весит 18,1 КБ, минимизирован и заархивирован. Это почти так же мало, как htmx. За то, что плакала вслух!
У меня есть некоторые сомнения по поводу запуска проекта с использованием пока еще относительно малоизвестного языка и структуры. Но эти сомнения успокаиваются, зная, что приложение не сломается и что сам Gleam можно изучить за полдня.
Самое важное: честно говоря, я не думаю, что был бы так же уверен в конечном продукте, в стабильности цепочки инструментов или в своей способности обновлять ее в будущем, если бы я создавал ее с использованием чего-либо другого. .
Теперь я перехожу к всей моей мотивации для написания этого поста: ощущение, что приложение Lustre находится в разработке
Прошло несколько недель с момента выхода этого приложения, и мне до сих пор нравится возвращаться к нему время от времени. Не потому, что клиент попросил изменений. Просто чтобы посмотреть на код.
Мне почти неловко говорить это, но большая часть остального моего кода на каком-то уровне кажется обузой. Особенно JavaScript. Даже если это Typescript, даже если там есть тесты. Это вызывает у меня беспокойство, как будто оно усеяно спрятанными минами и ловушками.
Может быть, это проблема с навыками. Возможно, меня просто слишком много раз обжигали.
Глядя на мой код Gleam/Lustre, я чувствую себя спокойным.
Вот и все. Это твит.
В заключение я искренне желаю, чтобы другие разработчики попробовали Gleam и Lustre, чтобы они тоже могли насладиться тем же дзен-подобным блаженством, рассматривая свой интерфейсный код.
Спасибо, что читаете.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3