Обновить
139.55

JavaScript *

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

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

Круглый стол в Wrike: как перевести фронтенд на новый стек

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

Больно, дорого, стрессово, но порой необходимо. Миграция на новый стек (язык или фреймворк) — событие, которое всегда интересно пообсуждать, особенно, если происходит оно не в твоем продукте. 13 июля в 19:00 (Мск) мы соберем подискутировать всех, кто пережил или переживает перевод фронтенда на новые технологии. «А я вам говорил» и другие комментарии зрителей — приветствуются!

Читать далее

Управление состоянием mapbox-gl в React

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

В процессе моей работы в geoalert.io я не раз сталкивался с проблемой управления состоянием приложения на React со встроенной картой mapbox-gl.

Я планирую посвятить теме цикл из трех статей, включая эту:

1. Управление состоянием mapbox-gl в React

2. Встраивание mapbox-gl в React

3. Управление состоянием React приложения сmapbox-gl с использованием XState

Читать далее

Конечные автоматы в реальной жизни: где мы их используем и почему

Время на прочтение14 мин
Охват и читатели58K
Привет, меня зовут Антон Субботин, я выпускник курса «Мидл фронтенд-разработчик» в Яндекс.Практикуме. Не так давно мы с наставником курса Захаром Овчаровым провели вебинар, посвящённый конечным автоматам и их практическому применению. Вебинар получился интересным, а потому по его следам я написал статью для Medium на английском языке. Также есть запись вебинара. Однако мы с Захаром решили сделать ещё кое-что: перевести на русский и немного расширить статью, чтобы вы могли никуда не ходить и прочитать её здесь, на Хабре. Разобрались с предысторией — теперь начнём погружение в мир конечных автоматов.



Конечный автомат с счастливым и грустным Васькой
Читать дальше →

Next js. Куда, откуда и причем здесь google?

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

Прошло уже почти 2 недели с момента презентации next 11. К сожалению, эта новость обошла хабр стороной и пора бы это исправить. Сперва немного о презентации. Восьмого числа, узнав про ивент, не теряя ни минуты, я пошел на него регистрироваться. Это был сайт, на котором странным образом были видны цветные курсоры и время от времени рядом с ними печатался текст. Немного поразмышляв и прочитав первые комментарии стало понятно, что передо мной такие же участники этого события. Неплохое и многообещающее интро. Однако, это был, пожалуй, единственный намек на то, чего стоит ждать от презентации. Веб-серфинг не принес никаких результатов и не удалось найти ни единого слова. Конечно же, используя next последние несколько лет можно было примерно представлять, какие технологии должны вот-вот появиться с полноценной поддержкой, понять, кто будет помогать в их реализации и какие цели будет преследовать компания, но все же, vercel умеет удивлять.

Пару слов о технологии, если кто-то умудрился обойти ее стороной. Next – backend-фреймворк для… Инкрементальной сборки, Серверного рендеринга, статической генерации или гибридного варианта приложений, построенных на react. Созданием занималась компания zeit, имеющей к 2016г. утилиту now. Затем, в 2020 году, после инвестиций в 21 млн$, компания была переименована в vercel, а утилита now (переименованная также в vercel) переросла в веб-сервис с дополнительным функционалом для выкладки приложений, в первую очередь, построенных на next, но также nuxt, Gatsby, angular и многих других популярных инструментов.

Читать далее

Все, что вы хотели знать про Qwik — новый фреймворк от создателя Angular

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

В начале мая, Misko Hevery, создатель фреймворка Angular, объявил о своем уходе из Google и команды Angular - в компанию builder.io.

Всего через полтора месяца, на его странице в Medium, появился Анонс нового фреймворка - Qwik.

Я решил разобраться, что он из себя представляет и зачем нужен.

Qwik сейчас на стадии proof of concept, и неясно, выстрелит он или нет, но уже понятны основные идеи, и можно потрогать код.

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

Читать далее

Дайджест свежих материалов из мира фронтенда за последнюю неделю №474 (21 — 27 июня 2021)

Время на прочтение2 мин
Охват и читатели7.8K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

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

Декларативный API на Next.JS — реальность?

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

Привет! Меня зовут Андрей, я Backend Node.JS разработчик в одной из зарубежных компаний, занимающихся разработкой системы для администрирования офисов. Наше приложение и его веб-версия предоставляют арендодателям возможность отслеживать заполненность офиса, обеспечивать подключение IoT-устройств для отслеживания, например, количества еды в холодильниках или остатка воды в кулерах, выдавать пропуски для сотрудников в своё здание и много чего другого. Одним из важнейших узлов в этой системе является API как для внутренних пользователей, использующих приложение или веб-сайт, так и для клиентов, использующих наше Whitelabel решение. Всего в нашей системе зарегистрировано более двух сотен API эндпоинтов, для построения которых мы использовали фреймворк NestJS. Если вы по какой-то причины ещё не слышали про Nest, то я настоятельно рекомендую ознакомиться со статьёй NestJS - тот самый, настоящий бэкенд на nodejs. Одной из основных и наиболее значимых особенностей NestJS является нативная поддержка декораторов, что в свою очередь позволяет создавать эндпоинты декларативно.

Читать далее

React Intl: интернационализация React-приложений

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

Библиотека React Intl предоставляет механизм для перевода текста на другие языки.


В данном "туториале" мы используем названную библиотеку для реализации интернационализации в проекте, написанном на React. Мы создадим простое приложение, позволяющее пользователю выбирать язык приложения.


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

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

Dynamic modules в NestJS

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

NestJS - фреймворк, вобравший в себя преимущества TypeScript, IoC/DI и структуру Angular, стремительно развивается, приобретая популярность.

Множество методик и практик описано в официальной документации.

Вдохновившись публикацией John Biundo - Build a NestJS Module for Knex.js, написал свой собственный модуль для Mailchimp Transaction API.

Читать далее

React испортил веб-разработку

Время на прочтение4 мин
Охват и читатели40K
В начале июня я посетил конференцию разработчиков .debug, на которой у моей компании был свой стенд. Смысл стенда заключался в том, чтобы создать ситуацию «Измени моё мнение»: мы представляли какую-нибудь радикальную идею, предлагали людям обсудить её с нами, а потом показывали им, что интересного мы делаем.

Мы решили взять такую идею:


Моим первым оппонентом стал этот молодой парень справа, создающий приложения на нативном React.

Если серьёзно, то React — это хорошая библиотека. Она важна для веб-разработки, потому что в ней используются декларативные и реактивные шаблоны, а такой сдвиг парадигмы в момент её создания был нужен всем. В те времена (6-7 лет назад) возникали проблемы с движками рендеринга и реактивностью, но React довольно неплохо их решил.
Читать дальше →

Лёгкая, гибкая, производительная обёртка над Web Animations API — @okikio/animate

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

В 2020 году автор оригинальной статьи решил написать более эффективную библиотеку PJAX, похожую на проект Rezo Zero — Starting Blocks, но так, чтобы легко работать с barbajs. Он понимал, что Starting Blocks легче расширить с помощью настраиваемых функций и их можно сделать более плавными, быстрыми и простыми в использовании. Со временем намерения автора изменились, и он начал замечать, как часто сайты с awwwards.com используют PJAX, но также часто мешают естественному восприятию сайта и браузера.

Многие сайты на первый взгляд выглядели круто, но если вы работали с ними долго, то это была другая история — полосы прокрутки часто переопределялись, предварительное извлечение часто было слишком активным и не оптимизированным для людей без мощного подключения к Интернету, ЦП и/или графических процессоров. К старту курса о Fullstack-разработке на Python делимся переводом обзора библиотеки @okikio/animate от её автора. На КДПВ вы видите первый кадр любопытной анимации из демо к библиотеке, эта анимация работает в закреплённой шапке сайта.

Читать далее

Непрерывная интеграция и развертывание (Deployment) с помощью Jenkins

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

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

Итак, начнем.

Как работают функции provide и inject во Vue 3?

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

Функции provide и inject во Vue 3 как по мне предлагают интересный подход к реализации паттерна Dependency Injection, однако принцип их работы недостаточно хорошо описан в документации. Они похожи на большой чёрный ящик с магией Vue, хотя на самом деле работают довольно просто. Я во всем разобрался, и хочу рассказать вам.

Читать далее

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

Trusted Types API для защиты DOM от XSS-атак

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

Вы когда-нибудь слышали об XSS-атаках, связанных с внедрением (инъекцией) вредоносного кода в DOM (далее — DOM XSS)? Если не слышали, то


DOM XSS — это тип атаки на веб-приложение, когда хакер использует полезную нагрузку (payload), которая выполняется как результат модификации DOM в браузере.

Это может привести к тому, что на стороне клиента будет выполнен посторонний код. Таким образом, на стороне клиента появляется уязвимость безопасности. Злоумышленники используют объекты, позволяющие внедрять вредоносную полезную нагрузку. Вот почему такие атаки называются инъекциями.

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

Путеводитель разработчика по Garbo-боту

Время на прочтение10 мин
Охват и читатели2.1K
у него есть два больших преимущества

Во-первых, он дешевле; а во-вторых, на обложке у него большими веселыми буквами напечатан дружеский совет: Don’t panic!

Дуглас Адамс


Из всего многообразия шахматных движков, Garbochess я выбрал по двум причинам: для него есть понятный JavaScript-код и он неплохо играет в Шахматы. Мне совсем не требовался гроссмейстерский уровень! Если бот играет слишком сильно, то обычных людей (вроде меня) это только отпугивает. Требовалась лишь игра достаточно разумная, похожая на игру человека, без глупых раздражающих ошибок и Garbochess мне всё это дал. К сожалению, как и большинство других шахматных движков, он играл только в одну игру — традиционные Шахматы. Именно это мне и предстояло исправить.
Читать дальше →

Взлом JavaScript с помощью JavaScript

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

Язык JavaScript появился больше 20 лет назад и до сих пор остается самым распространенным языком. Это единственный язык программирования, который работает на самой популярной платформе (в Интернете). На нем все чаще разрабатываются нативные (Visual Studio Code, Discord и Slack) и популярные мобильные приложения (Facebook, Skype, Tesla). Но знаете ли вы, в чем секрет его популярности? Программы Bug Bounty и обнаружение уязвимостей, которые приносят живые деньги.

В любом фильме про хакеров вы обязательно увидите сцену, где кто-то сидит перед компьютером и набирает загадочные команды на черном экране терминала (если только это не 3D-интерфейс UNIX из «Парка Юрского периода»).

Читать далее

zx – bash скрипты на javascript

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


Bash широко используется в программировании и является превосходным инструментом, но и у него есть свои недостатки. Поэтому Google разработал пакет zx, который позволяет использовать bash внутри javascript / typescript и имеет около 17к звёзд на github. В данной статье будут рассмотрены плюсы и минусы библиотеки, главные аспекты использования и примеры работы.
Читать дальше →

Делаем микрообразы с микросервисами

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

Из цикла "Микросервисы или смерть"

Решаемая проблема: монолитное приложение на Node.js раньше, в развернутом состоянии, занимало 0.2 Гб всего. Теперь же, разбитое на 33 микросервиса, занимает 33 * 0.1 = 3.3 Гб. Можно ли избежать подобной издержки? -- можно! В статье мы избавимся от лишнего веса.

Читать далее

Когда код это данные

Время на прочтение8 мин
Охват и читатели11K
«Представь, что люди как бы находятся в подземном жилище наподобие пещеры, где во всю её длину тянется широкий просвет. С малых лет у них на ногах и на шее оковы, так что людям не двинуться с места, и видят они только то, что у них прямо перед глазами, ибо повернуть голову они не могут из-за этих оков.»

© Платон «Государство», книга 7: Миф О Пещере
Время от времени мне пишут с просьбой помочь в написании кода, который меняет код (далее кодмод, от слов код и модификация - изменение) и сегодня я расскажу об этом нехитром процессе в новом формате, вдохновлённом диалогами Платона, он будет содержать вопросы обратившегося ко мне человека по поводу линтера нового поколения, и мои развёрнутые ответы.

Забегая вперед скажу, что результатом общения стал loader ESTrace, который при запуске может показать что-то вроде:


Но об этом позже, а сейчас:
Следим за функциями

Полное руководство по созданию классических приложений на JavaScript

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

Еще недавно разработка классических приложений считалась сложной задачей — для этого приходилось учить специальный язык программирования, например Java или C++. К счастью, сейчас веб-разработчики могут создавать прекрасные классические приложения, конвертируя код JavaScript в полноценные программы. Давайте разберемся, что для этого нужно.

Читать далее

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