Deno Decorates
На этой неделе команда Deno выпустила Deno v. 1.40 и назвала ее «значительным шагом вперед в эволюции» среды исполнения JavaScript и TypeScript.
«Новая версия содержит множество функций, улучшающих работу с Deno, в ней появился мощный Temporal API для расширенных операций с датой и временем, а также новейший синтаксис декораторов для более выразительного кода, – пишет команда. – наряду с этими улучшениями мы реализовали ряд обесцениваний, стабилизаций и удалений, направленных на оптимизацию возможностей Deno и подготовку к Deno 2».
Временное предложение предусматривает новый API, направленный на стандартизацию работы с датой и временем в JavaScript.Deno теперь поддерживает декораторы, которые предусмотрены в предложении TC39. Они также внедряются во всех браузерах, пишет команда.
Декораторы позволяют разработчикам добавлять функциональность без изменения существующего кода, используя, по сути, обертку, которая изменяет функцию того, что она «украшает». Декораторы можно использовать для добавления функциональности, изменения поведения, проверки данных или поддержки ленивой загрузки. Babel и TypeScript уже поддерживают декораторы.
«Декораторы — это предложение по расширению классов JavaScript, которое получило широкое распространение среди разработчиков в средах транспиляторов, а также широкий интерес к стандартизации, – пояснили они. – TC39 итерирует предложения по декораторам уже более пяти лет. Этот документ описывает новое предложение по декораторам, основанное на элементах всех предыдущих предложений».
Релизы Astro 4.2 и 4.3
Выпустили JavaScript-фреймворк Astro 4.3, в котором появилось больше контроля над выводом HTML-файлов. Для этого добавили новую опцию build.format под названием preserve. Новый формат сохраняет структуру файловой системы и обеспечивает ее зеркальное отображение в производстве.
«Эта функция обеспечивает лучшую совместимость с некоторыми веб-серверами, [которые] имеют строгие требования к структуре файлов», – отметила команда.
Обновление также добавило новый экспорт типа ComponentProps, аналогичный React.ComponentProps или Svelte’s ComponentProps.
«Этот тип экспорта позволяет вам ссылаться на реквизит, принимаемый другим компонентом, даже если этот компонент не экспортирует этот тип реквизита напрямую», – написала команда.
Кроме того, Astro 4.2, выпущенная в начале этого месяца, может похвастаться экспериментальными функциями, с которыми пользователи могут поиграть. Это первый релиз, в котором все функции, кроме одной, были созданы сообществом.
В Astro 4.2 добавили поддержку экспериментальной функции: Предварительный рендеринг страниц с использованием Chromium Speculation Rules API, который позволяет разработчикам предварительно рендерить страницы на клиенте и запускать клиентский JavaScript на страницах, которые пользователь, скорее всего, посетит следующими, для более быстрого просмотра.
Еще одна экспериментальная функция, которую добавили разработчики, – это измененный приоритет маршрутизации для инжектированных маршрутов. Интересно, что она появилась из-за одной проблемы. Маршруты, инжектированные с помощью API injectRoute(), имели приоритет, поэтому они подбирались раньше других маршрутов.
«С включенным флагом маршруты, инжектированные с помощью API injectRoute(), а также редиректы теперь будут следовать тому же порядку приоритетов, что и маршруты из файловой системы. Это должно обеспечить более стабильные, состоящие из правил упорядочивания приоритетов для всех маршрутов вашего проекта», – говорится в блоге.
Также были исправлены ошибки, подробно описанные в примечаниях к выпуску.
Nuxt 3.10 добавляет aSyncData при предварительном рендеринге
Nuxt 3.10 был выпущен на этой неделе, и он «полон возможностей и исправлений», — написал Дэниел Роу, возглавляющий основную команду Nuxt.
Одним из обновлений, которое должно повысить производительность сайта, является экспериментальное использование asyncData при предварительном рендеринге, при котором Nuxt автоматически пересобирает данные для разработчиков при предварительном рендеринге сайта.
«Ваши вызовы useAsyncData и useFetch будут дедуплицированы и кэшированы между рендерами вашего сайта. Особенно важно убедиться в том, что любой уникальный ключ ваших данных всегда может быть разрешен в те же самые данные. Например, если вы используете useAsyncData для получения данных, относящихся к определенной странице, вы должны предоставить ключ, который однозначно соответствует этим данным. (UseFetch сделает это автоматически)».
Это обновление также включает в себя безопасное для SSR создание доступных уникальных идентификаторов, что позволяет создавать более доступные интерфейсы в приложении.
Также в это обновление включены:
Расширенные опции app/router для пользовательского scrollBehavior или добавленные runtime дополнения маршрутов;
Поддержка Node.js на стороне клиента, которая «должна облегчить жизнь пользователям, работающим с библиотеками без надлежащей поддержки браузера», — отметил Роу. При этом он добавил, что из-за риска неоправданного увеличения пакета Nuxt «настоятельно рекомендует пользователям выбирать другие альтернативы, если это вообще возможно».
Улучшенная реактивность куки;
Лучшее обнаружение антипаттернов, что означает лучшую способность
Более эффективное обнаружение антишаблонов, что позволяет выявлять потенциальные ошибки и проблемы с производительностью;
Метаданные о маршрутах во время сборки; и
Разрешение модулей Bundler.
В блоге описаны основные моменты, но полные заметки о выпуске находятся на GitHub.