Обновить
196.01

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Стоит ли игра свеч? Кратко о Single SPA (часть 1)

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров9.5K

О проектировании микросервисной архитектуры с использованием фреймворка Single SPA и технологиях, связанных с его использованием.

Читать далее...

Playwright и Allure как хорошая практика для разработки веб-приложения

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6K

Разработчики вечно ищут баланс: как выпускать фичи быстро, качественно и желательно небольшой командой. Наш рабочий рецепт – это фронты + e2e-тесты. Рассказываю, как мы используем автотесты и визуализируем их результаты.

Читать далее

Изучение случайности в JavaScript

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.8K

В моем посте о создании утилиты цветовой палитры в Alpine.js случайность играла большую роль: каждый образец генерировался как композиция случайно выбранных значений Hue (0..360), Saturation (0..100) и Lightness (0..100). Когда я создавал эту демонстрацию, я наткнулся на Web Crypto API. Обычно при генерации случайных значений я использую метод Math.random(), но в документации MDN упоминается, что Crypto.getRandomValues() более безопасен. В итоге я решил попробовать Crypto (с фоллбэком на модуль Math по мере необходимости). Но это заставило меня задуматься, действительно ли "более безопасный" означает "более случайный" для моего варианта использования.

В чем разница

Как сделать приложение на NestJS, которое можно будет поддерживать спустя годы

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров8.2K

В данной статье мы разберём, как создать и расширять приложение на NestJS, которое будет адекватно поддерживаться спустя годы и не превратится в нечто, с чем не захочется работать разработчикам.

Читать далее

Zoneless Angular 18

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров5K

По праву основной фичей Angular 18 стала Zoneless Change Detection. Именно с ней так и хочется разобраться.

Одна из ключевых особенностей Angular — без преувеличения, мощнейший механизм обнаружения изменений, который отвечает, как ни странно, за обнаружение изменений и обновление вьюх.

Перед тем как мы перейдем к Zoneless Change Detection, вкратце пробежимся по концепции механизма CD (Change Detection) и тому, как он реализуется с помощью zone.js.

Читать далее

Кратко про основные техники кеширования в браузере

Время на прочтение6 мин
Количество просмотров9.3K

Сегодня мы поговорим о крайне важной, но порой недооцененной теме — кешировании в браузере.

Кеширование — это процесс сохранения копий файлов в локальном хранилище браузера, чтобы в последующем загружать их оттуда, а не с сервера. Так можно избежать лишних задержек и снизить нагрузку на сервер, т.к большинство ресурсов, таких как CSS-файлы, скрипты и медиаконтент, не нуждаются в повторной загрузке при каждом новом посещении страницы.

В статье рассмотрим несколько основных методов кеширования, таких как использование HTTP заголовков Cache-Control, ETag, и If-Modified-Since, а такжеLocalStorage.

Читать далее

Поиск ближайших любительских соревнований по бегу, плаванию, велосипедам и другим видам спорта

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.1K

Последние годы увлекаюсь любительскими соревнованиями и существует проблема с поиском близлежащих соревнований - есть несколько разных сайтов которые публикуют анонсы организаторов и на этих сайтах обычно все дисциплины вперемешку и никогда нет даже общей карты, в каких городах проводятся эти соревнования.

Например, я живу в Перми и хочу поучаствовать на следующих выходных в какой нибудь активности, например, побегать, прокатиться на велосипеде или поплавать. Ввожу в поиске «Пермь», но в результатах выдачи ничего нет. Хотя есть соревнование в посёлке Юг, который находится меньше часа езды от Перми. Но раз я ищу «Пермь», то «Юг» понятное дело в списке не выводится...

Вместе с Александром Ивановым мы решили разобраться с этой проблемой техническим способом - написать Apps Script, который обойдёт общий список соревнований на каждом из сайтов, где публикуются анонсы и соберет информацию о названии соревнования, дате и и городе, где проводится соревнование. А потом соберёт сводную таблицу предстоящих соревнований и в идеале отобразит эти точке на карте - так любитель сразу может понять, где проводятся ближайшие соревнования, какая у них дата и куда можно поехать. 

По итогу получилось не совсем так, как планировалось, но это может стать отправной точкой к собственным поискам. 

К тому же любительские соревнования это в первую очередь не сам спорт, а укрепление здоровья и забота о себе - по крайней мере, для меня. Я не фокусируюсь на спортивных достижениях, а участвую ради удовольствия, физической активности и возможности побывать в новых местах.

Ищем куда махнуть на пробежку 🏃

Как я написал загрузчик YouTube видео на Ktor + HTMX. Убийца React?

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.6K

Мы вырастили монстра, который больше не нужен (с)

Рассмотрим возможности применения модного фреймворка HTMX в связке с Ktor на примере написания загрузчика видео.

Читать далее

Управление зависимостями в Javascript заходит на новый виток? Работа с ES модулями без сборщиков

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров8.8K

Изначально эта статья задумывалась, как рассказ о различиях и назначении полей dependencies, devDependencies и peerDependencies в package.json. Эту тему выбрали ребята в моем телеграм-канале, кстати подписывайтесь, если еще не. Однако, когда я посмотрел количество контента на эту тему, то понял, что его достаточно даже в русском сегменте. При этом я прочитал одну статью, которая показалась мне очень хорошей, а также там были мысли на тему будущего управления зависимостями.

В итоге, я решил кратко пересказать вышеупомянутую статью, чтобы лучше самому усвоить тему, а также набросать проект по управлению зависимостями прямо на клиенте, через ES Modules. Так что вы можете прочитать либо оригинальную и полную статью у автора, либо сокращенную версию в первой половине этой статьи. А разбор работы ESM будет во второй половине.

Читать далее

Next.js и революционные изменения в React

Время на прочтение7 мин
Количество просмотров12K
image


React.js — это сейчас одна из самых популярных библиотек для создания современных веб-приложений. React славится гибкостью и богатством экосистемы. Одним из значительных достоинств этой экосистемы является Next.js — и то, как он успешно развивается. С этим фреймворком стало значительно удобнее разрабатывать приложения на основе React, их возможности расширились. В этой статье мы рассмотрим, как Next.js улучшил React, затронем его особенности, преимущества, и что из них вытекает.
Читать дальше →

Полный гайд по UI-китам: как их создавать, подключать и ничего не бояться

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров22K

Привет! Я Леша Кузьмин, главный про фронтенду в AGIMA. Мы с коллегами решили суммировать наш опыт по подготовке UI-китов и сделать большую и внятную инструкцию для новичков. Во-первых, это удобно — будем давать эту статью нашим стажерам и падаванам. Во-вторых, нам не жалко — читайте, делитесь опытом, задавайте вопросы в комментариях.

Ниже разбираем всё с самого начала: от «зачем это вообще нужно» до «как использовать на реальном проекте». А в самом конце найдете репозиторий с фрагментами кода, которые можно использовать в своей работе. Статья для начинающих и не только начинающих Frontend-разработчиков. За помощь в ее подготовке благодарю мою коллегу Ангелину Николаеву.

Читать далее

Фабричный метод в React: эффективное создание компонентов. Часть 1

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.1K

Привет всем! Я Мыльников Кирилл, frontend-разработчик в компании Usetech. Сегодня хочу поделиться примером реализации фабричного метода во фронтенде и объяснить, когда и где его следует применять. Освежим память о паттернах и роли, которую они играют в проектах.

Я готовлю серию статей о паттернах в React. Первая статья будет посвящена фабричному методу. Все примеры мы с вами разберем на реальных сценариях, с которыми вы могли бы столкнуться в проекте.

Давайте по классике начнем с определений, вспомним, что такое паттерны и фабричный метод.

Читать далее

Многопоточность JavaScript с SharedArrayBuffer и Atomics: основы

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4K

JavaScript по традиции известен как однопоточный язык. Т.е код выполняется последовательно, и одновременное выполнение нескольких задач может быть проблематичным. Если код сталкивается с тяжелыми вычислительными задачами, это может привести к задержкам и замедлению интерфейса юзера. Поэтому один поток не для каких-либо интенсивных вычислений или обработки больших объемов данных.

Чтобы обойти эти ограничения, были введены Web Workers — они позволяют выполнять JS-код в фоновом потоке, параллельно с основным. Однако, все сложилось так, что простой обмен данными между основным потоком и воркерами через postMessage имеет свои ограничения и может быть недостаточно хорошим для некоторых задач.

Здесь помогают SharedArrayBuffer и Atomics.

Читать далее

Ближайшие события

Загрузка es-модулей в браузерные приложения

Время на прочтение7 мин
Количество просмотров2.3K

Мне тут на днях попеняли, что, мол, я не в курсе, "что из esm до сих пор нельзя собрать бандл без транспиляции". Ну что я могу сказать... я действительно не в курсе :) На мой взгляд, es-модули придумали как раз для того, чтобы загружать по мере необходимости JS-код непосредственно в браузер, и собирать модули в бандлы - это, ну... как гладить кошку против шерсти.

Я понимаю, что традиции / привычки / требования бизнеса / обратная совместимость / корпоративная этика и т.п. говорят о том, что код для браузерных приложений должен поставляться в бандлах и точка! Тем не менее, в некоторых случаях (малые приложения, быстрое прототипирование, распределённая разработка) сборка бандлов является излишней и код в браузер можно и нужно загружать непосредственно в виде es-модулей.

Читать далее

Frontend. Поток данных

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5K

Здравствуйте :)

Коротко о чем тут, чтобы вы могли понять нужно ли оно вам или нет.

Тут я описываю то к чему пришел в проектировании глобальных сторов и потока данных в приложении.

Материал может быть полезен как для новичков, так и для более опытных.

Примеры будут на React и Effector, но это не важно, потому что тут важна идея, а не реализация. К тому же это везде будет примерно одинаково выглядеть.В конце будут так же ссылки на примеры с svelte + effector и react + redux thunk

Читать далее

Коварные утечки памяти в React: как можно обжечься на useCallback и замыканиях

Время на прочтение9 мин
Количество просмотров10K
image

Я работаю в Ramblr, это ИИ-стартап, где мы строим на React сложные приложения для аннотирования видео. Недавно мне попалась сложная утечка памяти, которая возникает при одновременном использовании замыканий JavaScript и хука useCallback в React. Поскольку я вырос на .NET, мне потребовалось немало времени, чтобы разобраться в происходящем. Поэтому я решил написать этот пост и рассказать вам, чему меня научила эта ситуация.
Читать дальше →

Руководство по ng-template и ngTemplateOutlet в Angular

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров11K

Angular предоставляет мощные инструменты для динамического создания и управления шаблонами. Среди этих инструментов ключевую роль играют директивы ng-template и ngTemplateOutlet. В этой статье мы подробно рассмотрим, что это такое, как их использовать, и какие нюансы могут возникнуть при работе с ними.

Читать далее

Преобразования данных React Query

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.9K

Привет, на связи KOTELOV! Мы перевели эту статью, чтобы понять, как эффективно преобразовывать данные при работе с REST API и библиотекой react-query.

Давайте посмотрим правде в глаза: большинство из нас не используют GraphQL. А если кто-то использует, то ему крупно повезло, потому что получает уникальную возможность запрашивать данные в том формате, в котором ему хочется. 

Но если вы работаете с REST, вы довольствуетесь тем, что возвращает бэкэнд. Так где лучше всего преобразовывать данные при работе с react-query? Универсальный ответ в разработке ПО применим и здесь: «Это зависит от обстоятельств». 

Разберем три подхода к преобразованию данных, их плюсы и минусы.

Читать далее

Примитивы в JavaScript — это миф?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров4.2K

Все мы знаем что в JavaScript есть "ссылочные"(Object), присваивающиеся по ссылке и "примитивные" (String, Number, Null и тд), присваивающиеся по значению, типы данных. Но так ли это на самом деле? В этой статье с помощью небольшого эксперимента мы убедимся, что это не совсем так и посмотрим как "примитивные" типы данных на самом деле хранятся в памяти.

Читать далее

Решение задач Front End с интервью. Promise Pool

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.9K

Разбираем задачу Promise Pool (Leetcode 2636)

Дан массив асинхронных функций functions и максимальный размер пула n. Необходимо написать асинхронную функцию promisePool. Она должна возвращать Promise, который разрешается, когда разрешаются все входные функции function.

Читать далее

Вклад авторов