Как стать автором
Обновить
34.92

TypeScript *

Cтрого типизированная надстройка для JavaScript

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

Пишем сложный Page object для playwright тестов вместе с Dorama

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

Всем привет! Сегодня расскажу о том, как удобно организовать Page Object для большого проекта с использованием Playwright и библиотеки Dorama. Большинство современных веб-проектов имеют сложный интерфейс с переиспользуемыми компонентами. Причем компоненты могут переиспользоваться как на разных страницах, так и в рамках одной страницы. Поэтому важно грамотно оформить POM с самого начала, чтобы можно было добраться до любого локатора любого компонента на странице. Это упростит написание тестов и улучшит читаемость кода. При формировании страниц и компонентов мы будем использовать как наследование, так и композицию. Перейдем к делу.

Читать далее
Всего голосов 6: ↑5 и ↓1+5
Комментарии4

Redux vs Mobx кого же выбрать для React-приложения в 2024 году?

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

Привет, Хабр!

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

В этой статье я рассмотрю два из самых популярных и зрелых стейт менеджеров для React: Redux и Mobx, а так же разберём и сравним Redux Toolkit и mobx-state-tree. Я сравню их основные принципы, преимущества и недостатки, а также покажу примеры их использования в коде. Также я попытаюсь ответить на вопрос, какой из них лучше подходит для разработки современных приложений на React в 2024 году.

Читать далее
Всего голосов 14: ↑12 и ↓2+12
Комментарии79

Привет, я FSD, чем могу помочь?

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

Привет, странник👋

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии13

1/n: Задачи leetcode JS — «Max Consecutive Ones» (Найти максимальное количество последовательных единиц)

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

Всем привет.

Я столкнулся с тем, что на собеседования в некоторые ИТ-компании на Frontend JavaScript требуется решать задачи, и я решил сделать серию статей на тему, как я решил их тем или иным образом. Перед вами — первый текст из серии.

Для решения будем использовать язык программирования TypeScript.

Читать далее
Всего голосов 8: ↑1 и ↓7-4
Комментарии17

Первое приложение на SolidJS

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

В этой статье познакомимся с SolidJS − JavaScript-библиотекой для создания пользовательских интерфейсов без виртуального DOM. Мы создадим легкий список задач с использованием TypeScript и разберем некоторые особенности библиотеки.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии14

Меняем формат розыгрышей призов в Telegram-чатах

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

Привет, Хабр!

Меня зовут Денис, и сегодня я расскажу вам о проекте, над которым я и мой друг работали последние 7 месяцев. Называется он PLAY365 — и это наш игровой бот для групповых чатов Telegram.

В посте будет много информации: о причинах и этапах создания бота, основных функциях, неочевидных нюансах, а также о том, с какими трудностями мы столкнулись и как их преодолели (конечно же, с примерами кода).

Узнать всё про PLAY365
Всего голосов 4: ↑3 и ↓1+4
Комментарии8

Меняем формат розыгрышей призов в Telegram-чатах

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

Привет, Хабр!

Меня зовут Денис, и сегодня я расскажу вам о проекте, над которым я и мой друг работали последние 7 месяцев. Называется он PLAY365 — и это наш игровой бот для групповых чатов Telegram.

В посте будет много информации: о причинах и этапах создания бота, основных функциях, неочевидных нюансах, а также о том, с какими трудностями мы столкнулись и как их преодолели (конечно же, с примерами кода).

Узнать всё про PLAY365
Всего голосов 4: ↑3 и ↓1+4
Комментарии8

Собираем метрики Node.js приложений в PM2 с экспортом в Prometheus

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

Ни для кого не секрет что для устойчивой и надежной работы node.js приложений необходимо проводить мониторинг их работы и делать полезные выводы глядя на их метрики. Это означает, что вы способны получать информацию о состоянии до возникновения проблем, таким образом, предотвращая сбои.

В этой статье я хотел бы рассказать о способе сбора статистики из node.js приложений, которые запущены в PM2, и экспорт этих данных в Prometheus.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

Храним файлы Strapi в облаке Selectel

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

Привет, я некоторое время работаю над своим пет проектом, где в основном занимаюсь фронтом, а для данных использую headless CMS под названием strapi.io. В какой-то момент у меня появилась потребность вынести медиа хранилище из локальной папки в облако. А так-как основной проект уже находился долгое время на серверах Selectel, я решил воспользоваться их объектным хранилищем и подключится к нему с помощью плагина “@strapi/provider-upload-aws-s3“. И в этой статье я вам опишу краткий гайд как это сделать.

Читать далее
Всего голосов 26: ↑26 и ↓0+26
Комментарии3

Храним файлы Strapi в облаке Selectel

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

Привет, я некоторое время работаю над своим пет проектом, где в основном занимаюсь фронтом, а для данных использую headless CMS под названием strapi.io. В какой-то момент у меня появилась потребность вынести медиа хранилище из локальной папки в облако. А так-как основной проект уже находился долгое время на серверах Selectel, я решил воспользоваться их объектным хранилищем и подключится к нему с помощью плагина “@strapi/provider-upload-aws-s3“. И в этой статье я вам опишу краткий гайд как это сделать.

Читать далее
Всего голосов 26: ↑26 и ↓0+26
Комментарии3

Практическая реализация паттерна Server-Driven UI на Flutter c использованием фреймворка Duit

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

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

В рамках этой статьи мы попытаемся решить эти проблемы, взяв за основу один из популярных паттернов и создав демонстрационное Flutter приложение на базе Server-Driven UI фреймворка Duit.

Читать далее
Всего голосов 6: ↑5 и ↓1+4
Комментарии7

Когда «as never» — единственное, что работает

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

as never, очень редко требуется в TypeScript. Давайте рассмотрим пример, где это необходимо.

Представим, что мы хотим отформатировать некоторый ввод на основе его typeof. Сначала мы создадим объект formatters, который сопоставит typeof с функцией форматирования:

Читать далее
Всего голосов 8: ↑4 и ↓4+4
Комментарии18

End-to-end тестирование React приложения с помощью Playwright

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

Привет, я Лиза – веб разработчик в одной зарубежной компании. Хочу поделиться тем, как я автоматизировала регрессионное тестирование в рабочем проекте на React с использованием довольно нового фреймворка Playwright. Разберемся, почему именно этот фреймворк, какие подводные камни, как обойти авторизацию и кто этим пользуется. 

Читать далее
Всего голосов 9: ↑9 и ↓0+9
Комментарии9

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

Переход с Vue-CLI и Webpack на Vite: ускоряем разработку Vue 3

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

Одним из новых инструментов в арсенале Vue 3 является Vite - быстрый и легковесный бандлер, который значительно упрощает процесс разработки и ускоряет сборку проекта. В этой статье мы рассмотрим, как перейти от стандартного подхода с использованием Vue-CLI и Webpack к более продвинутому и эффективному методу работы с помощью Vite.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии12

Использование возможностей Angular. Часть 1

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

Добрый день. Меня зовут Юрик и я angular-разработчик. Остальные в комнате у психиатра:

- Здравствуй Юрик, мы рады тебя видеть.

Читать далее
Всего голосов 5: ↑4 и ↓1+6
Комментарии10

Готовим Telegram Mini App без туннеля и с Hot Module Reload на React, TypeScript

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

В этой статье разберем как собрать комфортную девелопмент среду для разработки Telegram Mini App. Под комфортом я понимаю ситуацию когда тебе не нужно выгружать свое приложение в облако, чтобы увидеть результат работы в телеге, или запускать туннель типа ngrock, который после каждого перезапуска меняет ссылку. И я не уверен, что HMR можно получить через туннель. Поэтому я сделал свое решение, и хочу оставить его тут себе и потомкам.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Комментарии9

Zod умер. Да здравствует ajv-ts

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

TLRD: zod не подходил в проекте и решили сделать свой builder с помощью ajv в zod-like API. Поскольку гугление не показало никаких вменяемых результатов - было решено сделать свои костыли решения.

Если стало интересно - прошу под кат!

стало интересно, посмотрим что там!
Всего голосов 7: ↑5 и ↓2+5
Комментарии12

Коллекция утилит NestJS-mod для унификации приложений и модулей на NestJS

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

Коллекция утилит NestJS-mod предназначена для унификации приложений и модулей NestJS, а также представляет новые логические возможности разделения обязанностей между модулями (System, Core, Feature, Integration, Infrastructure).

Читать далее
Всего голосов 2: ↑2 и ↓0+2
Комментарии2

Cache API — кэшируем данные на стороне клиента

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

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

Разберемся, как мы можем его использовать, сравним с другими методами организации кэша на стороне клиента, а также реализуем новостную ленту с применением Cache API.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии13

ECMAScript 6+ vs TypeScript

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

Минули те времена, когда разработчики писали Frontend на «чистом» JavaScript (вплоть до ECMAScript 5). Все изменилось с выходом в свет версии ECMAScript 6 в 2015-м году. Это событие стало, по истине значимым в мировой Frontend разработке. Предыдущие 6 лет до этого, язык практически не менялся. Годом ранее, в 2014-м, компания Microsoft опубликовала TypeScript 1.0 и предоставила встроенную поддержку языка в своей IDE VisualStudio 2013. На самом деле, официально, TypeScript был выпущен еще в 2012 (версия 0.8), однако, популярностью он не пользовался в виду практически полного отсутствия поддержки со стороны существующих, на тот момент, IDE.

С тех прошло много времени. Оба языка развивались параллельно. В чем‑то они схожи, в чем‑то кардинально различаются. Каждый разработчик и каждая команда вольна самостоятельно решать, какой из них использовать. В это статье попробуем найти точки, как пересечения, так и расхождения этих двух языков и сравним их подходы.

Типизацию TypeScript рассматривать в этой статье не будем, т.к. очевидно, что в ECMAScript её нет, и сравнивать тут нечего.

Для чистоты эксперимента код будем транспилировать в старый добрый ECMAScript 5. TypeScript, для удобства, возьмем версии 4.8.4 (этой версии, для целей статьи достаточно) и будем компилировать его родным tsc компилятором. Для ECMAScript воспользуемся инструментарием Babel.

Читать далее
Всего голосов 10: ↑3 и ↓7-4
Комментарии15