Обновить
512K+

JavaScript *

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

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

Почему это антипаттерн?

Время на прочтение15 мин
Охват и читатели7.5K
Всем привет. В сентябре в OTUS стартует сразу несколько курсов по JS-разработке, а именно: JavaScript Developer. Professional, JavaScript Developer. Basic и React.js Developer. В преддверии старта этих курсов мы подготовили для вас еще один интересный перевод, а также предлагаем записаться на бесплатные демо-уроки по следующим темам:


А теперь перейдём к статье.





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

Как один компонент получает доступ к информации (особенно к переменной состояния), которая находится в другом компоненте? Как один компонент вызывает функцию, которая находится в другом компоненте?

JavaScript-разработчики в целом (и React-разработчики в частности) в последнее время все больше тяготеют к написанию так называемых чистых функций. Функций, которые не связаны с изменениями состояния. Функций, которым не нужны внешние соединения с базами данных. Функций, которые не зависят от того, что происходит за их пределами.

Безусловно, чистые функции — это благородная цель. Но если вы разрабатываете более-менее сложное приложение, то сделать каждую функцию чистой не получится. Обязательно наступит момент, когда вам придется создать хотя бы несколько компонентов, которые так или иначе связаны с другими компонентами. Пытаться избежать этого просто смешно. Такие узы между компонентами называются зависимостями.
Читать дальше →

Введение в React, которого нам не хватало

Время на прочтение17 мин
Охват и читатели42K
React — это самая популярная в мире JavaScript-библиотека. Но эта библиотека не потому хороша, что популярна, а потому популярна, что хороша. Большинство существующих вводных руководств по React начинается с примеров того, как пользоваться этой библиотекой. Но эти руководства ничего не говорят о том, почему стоит выбрать именно React.

У такого подхода есть свои сильные стороны. Если кто-то стремится к тому, чтобы, осваивая React, тут же приступить к практике, ему достаточно заглянуть в официальную документацию и взяться за дело.



Этот материал (вот, если интересно, его видеоверсия) написан для тех, кто хочет найти ответ на следующие вопросы: «Почему React? Почему React работает именно так? С какой целью API React устроены так, как устроены?».
Читать дальше →

Вышел Vue.js 3.0 «One piece»

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

Название - это отсылка к манге "One piece" про одного парня, который хочет стать пиратским королем, прим. перев.

Сегодня мы с гордостью объявляем об официальном выпуске Vue 3.0 «One Piece». Эта новая мажорная версия фреймворка с повышенной производительностью, меньшим размером, лучшей поддержкой TypeScript, новыми API-интерфейсами для крупномасштабных проектов (а для средних - можно избавиться от vuex, прим. перев.) и прочную основу для долгосрочных будущих итераций платформы.

Читать далее

Как провести технический аудит фронтенд-приложения на примере высоконагруженного информационного портала

Время на прочтение7 мин
Охват и читатели5.1K
Под аудитом сайта как правило понимают комплексный анализ факторов, влияющих на его видимость в поисковых системах, то есть, SEO-аудит. Также начинают набирать популярность UX-аудиты, которые оценивают эффективность, удобство и логику пользовательских интерфейсов.

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

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

Server-Sent Events: пример использования

Время на прочтение8 мин
Охват и читатели61K
Доброго времени суток, друзья!

В этом туториале мы рассмотрим Server Sent Events: встроенный класс EventSource, который позволяет поддерживать соединение с сервером и получать от него события.

О том, что такое SSE и для чего он используется можно почитать здесь.

Что конкретно мы будем делать?

Мы напишем простой сервер, который будет по запросу клиента отправлять ему данные 10 случайных пользователей, а клиент с помощью этих данных будет формировать карточки пользователей.

Сервер будет реализован на Node.js, клиент — на JavaScript. Для стилизации будет использоваться Bootstrap, в качестве API — Random User Generator.

Код проекта находится здесь.

Если вам это интересно, прошу следовать за мной.
Читать дальше →

Дайджест свежих материалов из мира фронтенда за последнюю неделю №433 (14 — 20 сентября 2020)

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

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

PWA не для всех

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

В комментах к моей предыдущей статье о service worker'ах была высказана мысль, что PWA на десктопах - вещь малополезная. Примерно полгода назад я разбирался с тем, как прикрутить Vue Storefront (PWA) к магазинам на платформе Magento и мне понравилось, как шустро крутилось в моём компьютере PWA-приложение по сравнению с оригинальным web-интерфейсом. Мой персональный опыт показывал, что PWA на десктопах имеет неплохую перспективу, но дальнейшее углубление в тему показало, что коллега @sumanai со своим отрицанием PWA на десктопах был прав.

Читать далее

Секреты JavaScript-функций

Время на прочтение9 мин
Охват и читатели27K
Каждый программист знаком с функциями. В JavaScript функции отличаются множеством возможностей, что позволяет называть их «функциями высшего порядка». Но, даже если вы постоянно пользуетесь JavaScript-функциями, возможно, им есть чем вас удивить.



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

Immutable Trie: найди то, не знаю что, но быстро, и не мусори

Время на прочтение9 мин
Охват и читатели5.8K
Про префиксное дерево (Trie) написано немало, в том числе и на Хабре. Вот пример, как оно может выглядеть:


И даже реализаций в коде, в том числе на JavaScript, для него существует немало — от «каноничной» by John Resig и разных оптимизированных версий до серии модулей в NPM.

Зачем же нам понадобилось использовать его для сервиса по сбору и анализу планов PostgreSQL, да еще и «велосипедить» какую-то новую реализацию?..
Читать дальше →

Подключение и настройка графиков TradingView

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


Если Вы — фрилансер или CTO финансового проекта, рано или позно Вы столкнетесь с вопросом подключения графиков, я сэкономлю Вам минимум сутки работы. Те, кто уже используют эту библиотеку, возможно, найдут что-то новое.


Статья будет в формате "книги рецептов" с open source решениями для криптовалютной биржи Binance и Forex.

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

React 17: Ничего нового?

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

Семнадцатый релиз React необычен отсутствием новых фич и/или функционала. Этот релиз сфокусирован на будущее, чтобы миграция на новые версии библиотеки осуществлялась проще: приложения теперь можно обновлять по частям.

Многообещающий Concurrent Mode не будет представлен в 17 версии, как и другие нововведения, над которыми активно работает команда. Грядущий релиз является частью стратегии постепенных обновлений.

Читать далее

Финансовые графики для вашего приложения

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


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


В статье расcмотрю три основных для меня библиотеки, сделаю сравнение и дополню комментариями из личного опыта.

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

Моментальная загрузка с instant.page

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


instant.page — это небольшой скрипт, позволяющий ускорять навигацию по сайту с помощью just-in-time предзагрузки. Когда пользователь наводит курсор на ссылку, страница предзагружается в фоне, и при переходе по ссылке открывается моментально. По тому же принципу работает InstantClick, но он предоставляется уже как отдельная библиотека на pushState и Ajax, с дополнительными модулями вроде прогресс-бара предзагрузки.
Читать дальше →

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

Делаем модальные окна для сайта. Заботимся об удобстве и доступности

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

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


Вёрстка таких окон сначала кажется простой задачей. Модальные окна можно сделать даже без помощи JS только лишь с помощью CSS, но на практике они оказываются неудобными, и из-за маленьких недочетов модальные окна раздражают посетителей сайта.


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


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

Intl.Segmenter: сегментация Юникода в JavaScript

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

Предисловие к переводу


Это перевод объяснительной части предложения (proposal) Intl.Segmenter, которое скорее всего будет добавлено в ближайшую спецификацию ECMAScript.


Предложение уже реализовано в V8 и без флага может быть использовано в версии 8.7 (точнее в 8.7.38 и выше), поэтому его можно протестировать в Google Chrome Canary (начиная с версии 87.0.4252.0) или в Node.js V8 Canary (начиная с версии v15.0.0-v8-canary202009025a2ca762b8; для Windows бинарники доступны с версии v15.0.0-v8-canary202009173b56586162).


Если будете тестировать в более ранних версиях с флагом --harmony-intl-segmenter, будьте осторожны, так как спецификация менялась и реализация под флагом может быть устаревшей. Проверяйте по выводу в примерах кода.


После перевода приведены ссылки на материалы об основаниях проблем, которые решает данное предложение.

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

Перфоманс фронтенда как современное искусство: графики, код, кулстори

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

Всем привет. В предыдущих статьях мы говорили о базовых вещах оптимизации: раз и два. Сегодня я предлагаю с разбега окунуться в одну часть из тех задач, которыми занимается команда архитектуры фронтенда в hh.ru.


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


  • Перфоманс приложения
  • Инфраструктура: сборка, тесты, пайплайны, раскатка на продакшене, инструменты для разработчика (например бабель-плагины, кастомные eslint правила)
  • Дизайн-система (UIKit)
  • Переезд на новые технологии

Если покопаться, можно найти много интересного.


Поэтому, давайте поговорим о перфомансе. Команда фронтенд архитектуры ответственна как за клиентскую часть, так и серверную (SSR).


Я предлагаю посмотреть на метрики и разобраться, как мы реагируем на различные триггеры. Статья будет разбита на 2 составляющие. Серверную и клиентскую. Графики, код и кулстори прилагаются.


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

Web Cryptography API: пример использования

Время на прочтение6 мин
Охват и читатели25K
Доброго времени суток, друзья!

В этом туториале мы рассмотрим Web Cryptography API: интерфейс шифрования данных на стороне клиента. Данный туториал основан на этой статье. Предполагается, что вы немного знакомы с шифрованием.

Что конкретно мы будем делать? Мы напишем простой сервер, который будет принимать зашифрованные данные от клиента и возвращать их ему по запросу. Сами данные будут обрабатываться на стороне клиента.

Сервер будет реализован на Node.js с помощью Express, клиент — на JavaScript. Для стилизации будет использоваться Bootstrap.

Код проекта находится здесь.

Если вам это интересно, прошу следовать за мной.
Читать дальше →

Svelte <3 TypeScript

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

Поддержка Typescript, без сомнения, была самой желанной и востребованной фичей в течении долгого времени и вот она здесь: Svelte официально поддерживает TypeScript!

Мы полагаем, что это даст вам гораздо более приятный опыт разработки. Который прекрасно масштабируется на больших приложениях, независимо от того, используете ли вы TypeScript или JavaScript.

Читать далее

Nested Sets для Javascript

Время на прочтение2 мин
Охват и читатели5.6K
На любом современном сайте (да и на сайтах постарше) встречаются вложенные структуры, иерархия объектов, деревья. Самый распространенный пример — каталог.

Сегодня множество проектов разрабатывается с использованием Javascript. Как же хранить древовидные структцры в этом случае? Об этом и хотелось бы поговорить.
Читать дальше →

JavaScript и TypeScript: 11 компактных конструкций, о которых стоит знать

Время на прочтение12 мин
Охват и читатели55K
Существует очень тонкая грань между чистым, эффективным кодом и кодом, который может понять только его автор. А хуже всего то, что чётко определить эту грань невозможно. Некоторые программисты в её поисках готовы зайти гораздо дальше других. Поэтому, если нужно сделать некий фрагмент кода таким, чтобы он был бы гарантированно понятен всем, в таком коде обычно стараются не использовать всяческие компактные конструкции вроде тернарных операторов и однострочных стрелочных функций.

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



В этом материале я собираюсь разобрать некоторые весьма полезные (и иногда выглядящие достаточно таинственными) компактные конструкции, которые могут попасться вам в JavaScript и TypeScript. Изучив их, вы сможете пользоваться ими сами или, как минимум, сможете понять код тех программистов, которые их применяют.
Читать дальше →