По словам компьютерного ученых и разработчика frontend Mauro Bieg, в 700 строк кода.
«Если я узнал что -то как разработчик программного обеспечения, то это то, что меньше строк кода лучше», — сказал Биг в новом стеке. «Меньше вещей, которые могут пойти не так, меньше вещей для поддержания».
Вот почему Биг создал Mastro, современную мета-обратную работу JavaScript, предназначенную для создания множественных приложений (MPA). По его словам, его ядро составляет приблизительно 700 строк TypeScript. По словам Биг, это отличная основа для начинающих разработчиков и ветеранов, которые хотят оптимизированный подход к созданию множественных приложений.
Уроки развития фронта
Биг вырос с PHP, а затем Ruby on Rails. Он помнит, когда термин «отзывчивый дизайн» был придуман, а прогрессивные улучшения что -то означали. Он попробовал угловой, но в конечном итоге принял реагирование на проекты с большим количеством интерактивности. Он все еще делает Ruby на Rails для основных веб -сайтов.
Затем ему предложили лидерство команды фронта. У организации было существующее приложение Next.js.
«Я подумал, что почему бы и нет? React действительно приятно развиваться, и если они выясняют, как заставить его выполнять обычные сайты, я полагаю, это круто. Казалось, все, казалось, использовали его, так насколько это может быть плохо».
Он узнал из первых рук, продолжил он.
«По крайней мере, для нашего варианта использования — газетный веб -сайт — 99% полезной нагрузки JavaScript в клиенте была полной тратой», — сказал он. «У нас было несколько интерактивных виджетов — например, слайд -шоу, меню и т. Д. — но 99% DOM, который реагировал, были увлажняющими, были полностью статичными».
Он остановился на Астро с островами, потому что это позволило бы им постепенно перевести свои существующие компоненты React без полного переписывания. Тем не менее, он ушел, чтобы стать техническим директором и единственным разработчиком при стартапе перед миграцией.
Астро также казалась хорошей подходящей для этой работы. Он соединил его с Solid.js вместо реагирования. Он обнаружил, что твердое вещество предлагало ту же функциональность, что и React, но был более исполненным.
Насколько минимально вы могли сойти с рук?
«Мне все еще очень нравится Астро, и восхищаться ими за их потрясающий маркетинг, возвращая MPA и островную архитектуру обратно в основной дискурс JS», — сказал он. «Но время от времени я сталкивался с странностями и грубыми краями, где они как бы спроектировались в угол и теперь застряли там из-за обратной совместимости и инерции».
Это заставило его задуматься: насколько минимально вы могли бы на самом деле сойти с рук? Что будет самой простой, самой маленькой, наиболее низкой технической структурой MPA, которые вы могли бы построить, которая по-прежнему позволит разработчику выполнять 95% вариантов использования без особых усилий, но лишь гораздо меньше сложно?
«Казалось, что если бы вы сосредоточились на MPA, это позволило бы вам удалить переплет для большинства веб -сайтов», — сказал он. «И удаление пучка удалило бы весь этот слой корабли, который вам нужно отладить, если что -то пойдет не так».
Ренессанс MPA?
Next.js, Nuxt, Astro, Solidstart, Sveltekit и Qwik используют бундлер/транспиллер, такой как Vite или Webpack, и, за исключением Astro и Qwik, все они — это спа, он написал в сообщении в блоге в прошлом году. (Примечание редактора: Solidstart и Sveltekit считаются гибридными рамками. Solidstart может создавать как спа, и MPA, а Sveltekit использует подход, который предлагает преимущества обоих.)
«Я хотел бы иметь современную мета-обратную работу JS, которая уходит с этими двумя конвенциями, но вместо этого решил оптимизировать для простоты и использования браузеров, построенных в JavaScript, на стороне клиента»,-написал он в посте.
Это видение привело к созданию Мастро. Mastro — это статический генератор сайтов и веб -структура, созданная из первых принципов. Он предлагает простой маршрутизатор на основе файлов, несколько композиционных функций для возврата HTML и стандартных объектов ответа.
Он строит MPA, потому что для большинства случаев использования современные браузеры могут лучше маршрутизировать на стороне клиента, чем JavaScript, утверждал Биг.
«MPA (наконец) имеют ренессанс», — сказал Биг новому стеку по электронной почте.
«Я хотел бы иметь современную мета-обратную работу JS, которая уходит с этими двумя конвенциями, но вместо этого решил оптимизировать для простоты и использования браузеров, построенных по сравнению с JavaScript на стороне клиента».
— Мауро Биг, разработчик фронта и компьютерный ученый
Биг разместил дело для MPAS в посте 2023 года. Он отметил, что в Spas идея состоит в том, что разработчики торгуют временем загрузки страниц страниц для лучшего пользователя позже.
«Вам не нужно повторно повторно всеобщее проживание после навигации по странице», — заявил он. «И, возможно, в спа -салах есть лучшие переходы страниц, чем браузеры».
Все хорошо и хорошо, но браузеры улучшились с тех пор, и баланс отключается от спа -салонов, утверждал он.
«В современных браузерах больше нет вспышки белых между страницами, у них есть обратно-кеширование и работники обслуживания для автономных функций и т. Д.»,-написал он.
Он по -прежнему видит варианты использования для спа -салонов — например, воспроизведение аудио или видео во время навигации страниц или иным образом сохраняя состояние в DOM (например, в положении курсора), которое нельзя легко сохранить в LocalStorage.
«Я считаю, что 99% веб -сайтов должны быть MPA», — заявил он. «Если вы не создаете следующие документы Figma или Google, мне кажется, что вам лучше делать MPA с некоторыми интерактивными островами, и если вы хотите полировать вещи, используйте трансляции представления CSS и убедитесь, что вы не сломаете Bfcache браузера».
С MPAS разработчики получают выгоду от сокращения размера пакета JavaScript.
«Пусть браузер обрабатывает то, что было создано для того, чтобы сделать: навигация по странице, восстановление прокрутки, кэширование страниц, потоковая передача в HTML — и HTTP GET, который возвращает HTML, намного проще отлаживать, чем поток RSC (React Server) JSX», — написал он в блоге.
Подход Мастро к извлечению данных, обработке ошибок
Для извлечения данных Мастро использует стандартную функцию извлечения, которая также поддерживает Deno и Node.js.
Это также не самоуверено в отношении обработки ошибок. Он рассматривает возможность добавления небольшого типа «результата», подобного ржавчине, и несколько вспомогательных функций либо в руководстве, отдельном модуле, либо в отдельный экспорт, такой как «Мастро/Результат», однажды.
«Я не думаю, что в Mastro Core необходимо самоуверенность», — сказал он по электронной почте. «Некоторые люди в порядке, занимающихся нетипированными исключениями, которые были по умолчанию в мире JavaScript с вечности».
Mastro использует Deno для своего двигателя времени выполнения.
«Я хотел начать с чего -то чистого, без багажа 20 -летней эволюции узла и полагаться на эту платформу как можно больше», — написал он. «Например, Deno поставляется с« deno.serve », который принимает« (req: requer) => обработчик ответов », который является отличным простым API».
Тем не менее, совместимость Bun и Node.js находится в его списке дел.
Реактивный Мастро
Мастро имеет свою собственную реактивную библиотеку GUI под названием Reactive Mastro. В то время как разработчики могут использовать любую библиотеку на стороне клиента, такую как HTMX или даже jQuery, вместе с Mastro Reactive Mastro-это минимальный взгляд Bieg на реактивном клиентском LIB. Это также идет на другой путь, он сказал: разработчики могут использовать реактивный Мастро с любым инструментом, генерирующим HTML, таким как PHP, Ruby on Rails и т. Д. Он объяснил в документации, почему он принял этот подход и как он сравнивается с другими рамками.
Мастро также использует библиотеку Maverick-JS/Signals для реализации сигналов.
«Мастро и реактивный Мастро действительно разделяют, так это минимальная философия (и да, модуль HTML)», — написал он. «Я надеюсь, что сигналы будут стандартизированы раньше, чем позже (они работают над этим), тогда я мог бы почти сократить размер реактивного Мастро пополам».
Что Мастро предлагает разработчикам
Биг перечислил преимущества Мастро для разработчиков frontend:
- Меньше вещей, чтобы понять. «Функции хорошо сочетаются вместе, поэтому вам не нужно изучать еще одну функцию, чтобы выполнять в основном одно и то же», — сказал он. «Например, в отличие от других структур, Мастро не волнует, отправляете ли вы HTML или JSON через проволоку, вы просто даете ему стандартный объект ответа, и вместо этого это будет четыре строки кода. И, кстати, функция обработчика (REQ: запрос)»
- Больше контроля. «Мастро действительно мало что делает, так что вы очень близки к основному времени выполнения (например, DENO для серверного JavaScript или браузер для HTML, CSS и клиентской JS)»,-заявил он. «Мастро никогда не вводит ничего в свою страницу. Если вы видите что-то странное на своей странице, это, вероятно, расширение браузера, как рекламный блок».
Если есть одна вещь, которая не очень просто в реализации Mastro, это маршрутизатор на основе файлов, написал он.
«Я просто хотел, чтобы люди могли отказаться от файла HTML или CSS в ‘Маршруты/ папка и попросите Мастро подавать его, как в старые добрые дни Apache/ PHP, — заявил он. — Это такой отличный способ начать проект ».
Кроме того, поскольку Мастро настолько мал, он быстро загружается на грани, где у разработчиков часто возникают проблемы с медленным холодом, если они загружают слишком много кода, сказал он, сказал, что
«Поскольку он так маленький, вы можете легко запустить его в браузере, например, с Vscode Mastro для веб -расширения, что на самом деле является первым, я думаю, статический генератор сайтов, полностью работающий в браузере», — написал он. Месяти также работают над этим, но не выполнило эту функцию как публикация.
Мастро: нет раздувания, нет денег в капитал, без хостинга
Мастро может быть использован для создания большинства проектов в Интернете сегодня, но также отлично подходит для начинающих, которые являются новичками в JavaScript, сказал он. На самом деле, он написал свою документацию как что -то вроде учебного пособия для начинающих, с возможностью пропустить, если вы ветеран веб -разработки.
С Мастро не существует бундлера и нет клиентского JavaScript по умолчанию. Также нет раздувания, нет денег венчурного капитала, чтобы «предотвратить возможное закрепление», заявляет веб -сайт, нет услуг хостинга, чтобы продавать вас, и нет «обновления беговой дорожки».
«Мы используем платформу и почти без зависимостей, что позволяет нам сохранять небольшие и низкоустремления»,-говорится в сайте. Он говорит «мы», но на самом деле это просто Биг. Он добавил, что на 700 строк кода нетрудно поддерживать.
Но Биг действительно хочет отзывы сообщества и предложения.
«Я бы хотел, чтобы какое -то сообщество формировалось вокруг него, делялось рецептами, документами или даже библиотеками, которые хорошо работают с Мастро», — сказал он. «В настоящее время я вижу, что это происходит в основном в вопросах GitHub, но, возможно, скоро, возможно, пришло время открыть раздор или дискурс. Прямо сейчас я все еще на сцене, чтобы узнать слово и увидеть, какие аспекты Мастро резонируют с кем и какую толпу он привлекает».
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Loraine Lawson — ветеран -репортер, который в течение 25 лет освещал технологические проблемы от интеграции данных до безопасности. Прежде чем присоединиться к новому стеку, она работала редактором Banking Technology Site Bank Automation News. Она … читайте больше от Лорейн Лоусон