Обновить
256K+

JavaScript *

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

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

Проверка JavaScript-движка Rhino, или как встретились единорог с носорогом

Время на прочтение22 мин
Охват и читатели3.4K

Имеется большое разнообразие языков программирования, но больше всего наши пользователи хотят, чтобы анализатор PVS-Studio поддержал один из самых популярных языков – Javascript. Одним из проектов, который можно использовать для написания статического анализатора JavaScript, является движок Rhino. В данной статье мы проведём анализ исходного кода Rhino при помощи PVS-Studio.

Читать далее

Эффективная FIFO-обработка для Node.js и Chrome

Время на прочтение8 мин
Охват и читатели11K

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

В таких нагруженных системах, как коллектор нашего сервиса мониторинга PostgreSQL-серверов, создание и последующая подчистка Garbage Collector'ом подобных избыточных объектов и полей - непозволительная роскошь.

Но если внимательно посмотреть на эту схему, то можно заметить, что сами элементы очереди A, B, C линейно упорядочены. Так нельзя ли использовать в качестве очереди обычный массив с его .push() и .shift()?..

Насколько это будет эффективно, какие грабли встретятся на этом пути, и как их можно обойти - сегодня об этом.

Читать далее

Разработка Angular-приложений и построение их архитектуры

Время на прочтение12 мин
Охват и читатели22K

Привет! Меня зовут Самат, я frontend-специалист компании SimbirSoft.

Моё первое знакомство с Angular началось с погружения в документацию, которая помогла мне лучше понять, как устроен этот фреймворк. Наверняка, этого было бы достаточно, чтобы подключиться к проекту или заняться его разработкой с нуля.

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

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

Читать далее

Как повысить скорость разработки с помощью общедоступных функций JavaScript

Время на прочтение10 мин
Охват и читатели11K

Практическое руководство по написанию лаконичного кода и повторному использованию вспомогательных функций JS в проектах.

Читать далее

TypeScript в деталях. Часть 2

Время на прочтение11 мин
Охват и читатели18K

Синтаксический сахар в Redux: Type to reducer и Redux toolkit для самых маленьких

Время на прочтение5 мин
Охват и читатели5.4K

Сегодня рассказ пойдет о двух удобных способах сократить рутину в Redux, которые мы используем в разных частях собственного проекта. Речь пойдет о малоизвестной библиотеке Type to reducer и довольно функциональном Redux toolkit. Почему нам было трудно жить с чистым Redux, зачем нужны вспомогательные инструменты и как они облегчают жизнь, читайте под катом.

Статья написана по итогам внутреннего митапа для нефронтендеров, проходившего пару месяцев назад, и рассчитана не только на тех, кто в теме.

Читать далее

Мой аналог The Go Playground

Время на прочтение4 мин
Охват и читатели4.4K

The GO Playground своего рода онлайн песочница для любителей языка Go. Под данным катом описано как я создавал свой аналог этой платформы.

Читать далее о Go Playground

Продвинутые хуки в React: всё о UseEffect

Время на прочтение5 мин
Охват и читатели89K

В этой статье рассмотрим советы и приёмы, которые помогут более профессионально написать код на React.

Читать далее

Полифилы JavaScript: что это и зачем они нужны?

Время на прочтение4 мин
Охват и читатели28K

Всем привет, я — Кирилл Мыльников, frontend разработчик компании Usetech.

Сегодня хочу рассказать о полифилах JavaScript: что это и зачем они нужны? На практике мы реализуем несколько полифилов: map, forEach, filter, reduce. 

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

Итак, начнём с определения полифила, а затем перейдём к методам.

Читать далее

Простая масштабируемая структура Angular приложения

Время на прочтение5 мин
Охват и читатели11K

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

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

Читать далее

Как мы переходили на React-router v6: подводные камни и альтернативы

Время на прочтение8 мин
Охват и читатели24K

Мы перешли на шестую версии React-router. Это помогло нам решить несколько проблем, например, определение маршрутов в Switch рендерит точный маршрут, а не первое совпадение, а размер бандла уменьшился в 2 раза.  

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

Читать далее

TypeScript: разбираем исходный код Radash

Время на прочтение13 мин
Охват и читатели6K


Привет, друзья!


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


Репозиторий с кодом библиотеки находится здесь.


Обратите внимание: я позволил себе немного модифицировать отдельные утилиты для повышения читаемости и сокращения шаблонного кода. Также в нескольких местах пришлось поправить типы.


Для тех, кому интересно, вот большая коллекция сниппетов JavaScript.


Начнем с чего-нибудь попроще.

Читать дальше →

10 задач с JavaScript Promise для подготовки к собеседованиям

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

Promise — это отличительная особенность JavaScript как асинхронного языка программирования. Нравится вам это или нет, понять его в любом случае придется. В этой статье я привожу 10 примеров кода с Promise, начиная от базового уровня заканчивая продвинутым.

Читать далее

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

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

Время на прочтение6 мин
Охват и читатели12K

Недавно мы в команде столкнулись с тем, что нам понадобилось кастомное правило для линтера. Немного поиска в гугле, и через час-полтора правило было готово. Делимся базовыми примерами, которые помогут вам погрузиться в процесс разработки правил.

Читать далее

JAMstack — зачем, почему и за что

Время на прочтение9 мин
Охват и читатели21K

Доброго времени суток. 

Сегодня предлагаю разобраться что такое JAM stack. Каковы его принципы, какие части он имеет и вообще чем отличается от традиционных подходов. Так же в данной статье я поделюсь полезными ссылка где вы сможете найти почти что все что может потребоваться вам при работе с JAM stack.

Читать далее

TypeScript в деталях. Часть 1

Время на прочтение6 мин
Охват и читатели37K

Велосипедим Promise на TypeScript

Время на прочтение11 мин
Охват и читатели14K

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

Читать далее

Как написать кроссбраузерное расширение в 2022 году

Время на прочтение8 мин
Охват и читатели11K
image

Привет! Меня зовут Георгий Костуров, я лид фронта в одной из команд СберМаркета. В один прекрасный день ко мне пришли менеджеры и сказали, что нужно написать браузерное расширение для внутреннего джобборда. Оно должно взаимодействовать с сайтами avito и hh, чтобы добавлять кандидатов в HR-систему, не скачивая и не вбивая вручную контакты из резюме на сайте.

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

На каком языке писать расширение?


Мой путь начался с поиска ответа на вопрос: «А хотя бы на каком языке придется это писать?» Полазив по интернету, с радостью обнаружил, что всё-таки это можно делать на JS. Хотя так было далеко не всегда. Первый браузер с API расширений, основанным исключительно на HTML, CSS и JavaScript, появился в 2010 году, им был Chrome. А до этого расширения необходимо было писать с использованием языка XUL (язык разметки на основе xml, обладающий большим функционалом по сравнению с HTML4).
Читать дальше →

Переводчик сайтов на JS

Время на прочтение4 мин
Охват и читатели14K

В наши дни довольно легко преодолевать языковой барьер в интернете благодаря различным сервисам перевода. Однако что делать, если у пользователя вашего приложения устаревший браузер? Или он открывает ваш сайт в приватном окне, где не работает встроенный переводчик?
Ответ очевиден: реализовать свой переводчик на сайте!

Читать далее

XSS с мутациями: как безопасный код становится зловредным и при чем здесь innerHTML

Время на прочтение11 мин
Охват и читатели12K

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

Читать далее