Обновить
128K+

JavaScript *

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

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

ReactJS: быстрый старт

Время на прочтение7 мин
Охват и читатели8.4K
Совсем скоро стартует курс «React.js разработчик», поэтому в стенах OTUS состоялся очередной открытый урок. На нем рассмотрели следующие вопросы:

  • что входит в стандартный набор возможностей React.js;
  • можно ли с помощью этого построить сложное приложение;
  • композиция против наследования;
  • функциональное программирование — это легко или сложно?
  • что такое Redux, и зачем он нужен.



В конце урока разработали небольшое веб-приложение на ReactJS. Вебинар провел Никита Овчинников, инженер-программист с более чем 8-летним опытом коммерческой разработки.
Читать дальше →

Знай своего врага: создаём Node.js-бэкдор

Время на прочтение7 мин
Охват и читатели24K
Бэкдор в собственном коде, который может незаметно взаимодействовать с операционной системой, это один из самых страшных кошмаров любого разработчика. В настоящий момент в npm имеется более 1.2 миллиона общедоступных пакетов. За последние три года зависимости проектов превратились в идеальную цель для киберпреступников. Экосистема npm может оказаться на удивление хрупкой в том случае, если сообщество разработчиков не обратит пристальное внимание на безопасность. В качестве доказательств этой мысли достаточно вспомнить о тайпсквоттинге и об инциденте с npm-пакетом event-stream.



Автор статьи, перевод которой мы сегодня публикуем, хочет, в образовательных целях, рассказать о том, как создавать бэкдоры для платформы Node.js.
Читать дальше →

Обзор видеоплееров для веба

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

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



Я подумал, что кому-то ещё это могло бы оказаться полезным и решил оформить в виде статьи на Хабр.

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

Знание и состояние

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

Сердце любого современного сайта или браузерного приложения (что SPA, что PWA, что любые другие три буквы) — это его State, или состояние.


Мы можем сколько угодно спорить о том, что лучше — React, Vue, Svelte, Angular, можем продолжать пользоваться jQuery, но в действительности это не так важно. Это та часть нашего приложения, которое мы видим — его “мышцы“ и “кожа”. Но то, как вы думаете — какими терминами оперируете, какие механики используете для даже визуализации в голове того, как в вашем приложении “текут” данные — все это идет из его скелета. Из state manager-а.


Помните, пару лет назад у нас была усталость от JavaScript-а? Сейчас я вижу у огромного количества людей усталость от state manger-ов. Redux? Да, да and да. RxJS? Тоже. MobX? Если он такой простой — блин, почему у него есть в документации страница западни.html?


Ответ “почему многим так тяжело” есть, но сначала надо точно сформулировать проблему.


Выбирая state manger — мы выбираем образ мышления. Вариантов сейчас много, но самые популярные подходы бьются на 3 группы:

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

Все дороги ведут в Fullstack

Время на прочтение4 мин
Охват и читатели7.1K
Встретились как-то три разработчика на перепутье JavaScript фреймворков. Смотрят — валун лежит, а на нем указатели: налево — React.js, направо — Node.js, прямо пойдешь — Fullstack JS станешь. Начали разработчики спорить, какой путь выбрать, и у каждого своя правда была… Сегодня вы услышите сказ о трех разных курсах по JavaScript и, быть может, узнаете себя в одном из наших героев.




Первого разработчика звали Илья. Был он опытным фронтендером, но хотел и не только на фронте, но и дома быть полезным, чтоб с простыми задачами самому справляться — там серверок настроить, тут API прикрутить. Второй, Добрыня, был профи в бэкенде — что угодно мог построить-собрать! Команда души в нем не чаяла, но нет-нет, да хотелось ему какого-нибудь подвига заметного, осязаемого: хоть кнопку какую сделать или форму интерактивную людям в пользование. Третий, Алеша, только недавно начал свой путь в разработке, но сразу загорелся стать мастером на все руки: чтоб, как говорится, и в фронт, и в бэк, и в добрые юзеры.
Читать дальше →

Вывод типов в TypeScript с использованием конструкции as const и ключевого слова infer

Время на прочтение5 мин
Охват и читатели61K
TypeScript позволяет автоматизировать множество задач, которые, без использования этого языка, разработчикам приходится решать самостоятельно. Но, работая с TypeScript, нет необходимости постоянно использовать аннотации типов. Дело в том, что компилятор выполняет большую работу по выводу типов, основываясь на контексте выполнения кода. Статья, перевод которой мы сегодня публикуем, посвящена достаточно сложным случаям вывода типов, в которых используется ключевое слово infer и конструкция as const.


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

Как уменьшить количество и увеличить читаемость кода в react-redux, redux-saga

Время на прочтение5 мин
Охват и читатели11K
В этой статье я хотел бы поделиться своим опытом использования связки react-redux и redux-saga, а точнее, какой «велосипед» я использую, для уменьшения количества однотипного кода и упрощению его восприятия.
Читать дальше →

3D своими руками. Часть 1: пиксели и линии

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


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

Методы борьбы с legacy-кодом на примере GitLab

Время на прочтение14 мин
Охват и читатели12K
Можно бесконечно холиварить о том, является ли GitLab хорошим продуктом. Лучше посмотреть на цифры: по итогам раунда инвестирования оценка GitLab составила 2,7 млрд долларов, в то время как предыдущая оценка была $1,1 млрд. Это означает бурный рост и то, что компания будет нанимать все больше и больше фронтенд-разработчиков.

Так выглядит история появления фронтенда в GitLab.



Это график количества фронтендеров в GitLab, начиная с 2016 года, когда их не было вообще, и заканчивая 2019-м, когда их стало уже несколько десятков. Но сам GitLab существует 7 лет. Значит, до 2017 года основной код на фронтенде писали бэкенд-разработчики, хуже того, бэкенд-разработчики на Ruby on Rails (ни в коем случае никого не хотим обидеть и ниже поясним, о чем идет речь).

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

NodeJS: быстрый старт

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


Всем привет! Совсем скоро стартует курс «Разработчик Node.js», в связи с чем мы провели традиционный открытый урок. На вебинаре рассмотрели сильные и слабые стороны Node, а также обсудили, для каких задач эта программная платформа подходит лучше всего, а для каких следует выбирать другие языки и фреймворки. И, разумеется, не обошлось без практики. Для запуска примеров и программ необходимо было установить Node.js.

Преподаватель — Александр Коржиков, Dev IT Engineer в компании ING Group (Нидерланды).



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

Информационная панель распространения Коронавируса COVID-19 (React + Chart.js + BootstrapTable)

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

Я выложил в "оупен-сорс" новую информационную панель распространения Коронавируса COVID-19, которая позволяет анализировать динамику (кривизну графика) распространения Коронавируса для разных стран.


Информационная панель распространения Коронавируса COVID-19

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

Rendering Lists in React Native

Время на прочтение4 мин
Охват и читатели12K
In this article, I’m not going to repeat the usual advice about minimizing rendered content or caching images. No. We’re going to focus exclusively on real list optimization, regardless of what exactly needs to be rendered — because when a client says “I want it this way,” arguing about requirements is rarely productive.

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

Пишем Ретровейв на Angular

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

Web Audio API существует уже давно, и про него есть немало статей. Поэтому про сам API много говорить не будем. Расскажем, что Web Audio и Angular могут стать лучшими друзьями, если их правильно познакомить. Давайте сделаем это!


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

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

Скрываем часть номера телефона

Время на прочтение3 мин
Охват и читатели16K
Представьте, что вам нужно скрыть часть номер под звездочками. Заменить +79999999999 на +799****9999 не трудно, а теперь представьте, что масок номеров не одна, а на много больше, номера эти как российские, так и канадские или любые другие. В этой функции я постарался захватить как можно больше номеров.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №407 (16 — 22 марта 2020)

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

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

Введение в React

Время на прочтение30 мин
Охват и читатели109K
Оглавление
1. Getting started with React
....1.1 Методы добавления React
....1.2 Выбор метода добавления
........1.2.1 Добавление React с помощью тэга <script />
........1.2.2 Добавление React с помощью create-react-app
2. Basically React
....2.1 React object
....2.2 React element
........2.2.1 CreateElement
........2.2.2 CloneElement
........2.2.3 IsValidElement
........2.2.4 Children
....2.3 React компоненты
........2.3.1 React.Component
........2.3.2 React.Fragment
.........2.3.3 State
.........2.3.4 Events
.........2.3.5 Lifecycle
.........2.3.6 Refs
....2.4 ReactDOM
........2.4.1 Render
........2.4.2 Hydrate
........2.4.3 UnmountComponentAtNode
........2.4.4 CreatePortal
3. Other topics
....3.1 Lists and Keys
....3.2 Error Handling
........3.2.1 getDerivedStateFromError
........3.2.2 componentDidCatch
Заключение

React — JavaScript-библиотека с открытым исходным кодом для разработки пользовательских интерфейсов.

1. Getting started with React


1.1 Методы добавления React


Существует 2 основных метода для добавления React на сайт:

  1. С помощью тэга <script />
  2. С помощью create-react-app

1.2 Выбор метода добавления


Выбор метода зависит от потребностей. Если вы просто хотите добавить немного интерактивности на существующую страницу или хотите просто попробовать React тогда используйте первый метод подключения. Если вы собираетесь построить полноценное React приложение, то используйте create-react-app.

1.2.1 Добавление React с помощью тэга <script />


Шаг 1 Добавьте 3 тега в контейнер head на вашей странице:
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>

Здесь подключаются библиотеки React и React-dom, а также компилятор babel.
Babel не является обязательным для использования React, но полезным для написания кода UI, с помощью JSX.

Шаг 2 Добавьте пустой контейнер на вашу страницу чтобы отметить место, где вы хотите что-либо отобразить с помощью React.
Читать дальше →

ReactJS. Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memo

Время на прочтение4 мин
Охват и читатели34K
Доброго времени суток, Хабр!

Все reactjs разработчики, кто имеет дело с интерактивностью между бэком и фронтом рано или поздно встречаются, или встречались, или встретятся со следующей ошибкой:


Если дословно, то получится так:
Предупреждение. Невозможно выполнить обновление состояния React для неустановленного компонента. Это не операция, но она указывает на утечку памяти в вашем приложении. Чтобы исправить, отмените все подписки и асинхронные задачи в функции очистки useEffect.

На самом деле все достаточно просто, нужно всего лишь обратить внимание на следующие словосочетания:

  1. Невозможно выполнить обновление состояния
  2. неустановленного компонента;
  3. отмените все подписки и асинхронные задачи
  4. очистки useEffect


В основе хуки. GO в под кат!
Читать дальше →

Геотрекинг в React Native

Время на прочтение8 мин
Охват и читатели15K
Мобильное приложение может выступать в роли «рабочего места» сотрудника, при этом бывает необходима передача географических координат и прочих данных. При кроссплатформенной разработке приложений на iOS и Android для этой задачи зачастую используют фреймворки, такие как Flutter или React Native. В этой статье мы рассказываем об особенностях работы с геолокацией в React Native на примере нашего кейса.

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

ING открывает Lion: библиотеку производительных, доступных и гибких веб-компонентов

Время на прочтение7 мин
Охват и читатели1.9K
Всем привет. В преддверии старта курса «Fullstack разработчик JavaScript» подготовили для вас перевод интересного материала.





TL;DR: Веб-разработка дело трудное независимо от того, создаете вы свои собственные компоненты, используете дизайн-системы, реализуете поддержку различных браузеров, обеспечиваете доступность или добавляете сторонние зависимости. Lion стремится облегчить вашу жизнь, беря на себя реализацию полнофункциональных, доступных, производительных и не привязанных к определенному фреймворку компонентов. Загляните в репозиторий ing-bank/lion.

Возможно, некоторые из вас уже знают, что у ING долгая и богатая история создания веб-компонентов, начиная с библиотеки Polymer и заканчивая недавней LitElement.
Читать дальше →

Знакомимся с NestJS

Время на прочтение5 мин
Охват и читатели19K
Перевод статьи подготовлен в преддверии старта курса «Разработчик Node.js».




У современных разработчиков есть много альтернатив, когда речь заходит о создании веб-сервисов и других серверных приложений. Node стал крайне популярным выбором, однако многие программисты предпочитают более надежный язык, чем JavaScript, особенно те, кто пришел из современных объектно-ориентированных языков, например, таких как C#, C++ или Java. Если TypeScript просто хорошо подходит NodeJS , то фреймворк NestJS выводит его на совершенно новый уровень, предоставляя современные инструменты бэкенд-разработчику для создания долговечных и высокопроизводительных приложений с использованием компонентов, провайдеров, модулей и других полезных высокоуровневых абстракций.

В этой статье мы рассмотрим процесс создания простого API-сервера на NestJS для обработки базового сценария приложения: создание, хранение и получение списка продуктов универсама.
Читать дальше →