Обновить
256K+

JavaScript *

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

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

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

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

В этом туториале мы рассмотрим 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 charting_library: рецепты подключения и настройки

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


При работе с финансовыми сервисами рано или поздно появится задача подключить профессиональные графики. Собрал книгу рецептов по charting_library — подключение данных, realtime, кастомизация, серверный адаптер. Сэкономит минимум сутки работы. Кто уже работает с библиотекой — часть кейсов будет новой.

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

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

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

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

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

Читать далее

Выбираем библиотеку для финансовых графиков

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


Поиск подходящих графиков отнимает время. Делюсь опытом выбора финансовых библиотек — чтобы сэкономить ваше.


В статье — четыре библиотеки, с которыми работал сам. Сравнение и комментарии из личного опыта.


Статья актуализирована 25.07.2026.

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

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

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


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

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

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

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


Вёрстка таких окон сначала кажется простой задачей. Модальные окна можно сделать даже без помощи 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 мин
Охват и читатели24K
Доброго времени суток, друзья!

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

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

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

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

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

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

Svelte <3 TypeScript

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

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

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

Читать далее

Nested Sets для Javascript

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

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

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

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

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



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

NodeJS: 12 пакетов для продуктивности разработчика

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


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

Основы настройки Webpack

Время на прочтение3 мин
Охват и читатели19K
Для начала установим webpack, делается это с помощью команд:

yarn add webpack webpack-cli -D, если используете менеджер пакетов yarn
npm i webpack webpack-cli --save-dev, для менеджера пакетов npm

Настраивается Webpack с помощью конфигурационного файла webpack.config.js, который хранится в корневой директории проекта.

Пример конфигурационного файла:

const path = require('path')
module.exports = {
   watch: true,
   entry: "./src/index.js",
   output: {
       filename: "bundle.js",
       path: path.resolve(__dirname,'build'),
       publicPath: "/"
   }
};

Начальная конфигурация представляет собой следующее:

  • watch — заставляет webpack отслеживать изменения в файлах и заново выполнять сборку;
  • entry — Указывает на точку входа в проект, и откуда нужно начать построение графа внутренних зависимостей проекта;
  • output — Указывает путь, где будет располагаться создаваемый файл и как он будет называться;

Так же необходимо установить webpack-dev-server, который понадобится для разработки и отладки приложения.

yarn add webpack-dev-server для менеджера пакетов yarn или
npm i webpack-dev-server если используется npm

Для настройки webpack-dev-server добавим devServer в нашем конфигурационном файле.

Параметры для webpack-dev-server:

module.exports = {
    //...
    devServer: {
        port: 8000,
        historyApiFallback: true,
        hot: true,
    },
};

Также нам нужно добавить/заменить в нашем package.json файле скрипт запуска проекта:

"start": "webpack-dev-server --mode development",

и скрипт для сборки билда:

"build": "webpack --mode production"

Загрузчики


Загрузчики (loaders) — это специальные модули, которые используются для «загрузки» других модулей. Так же они позволяют предварительно обрабатывать файлы по мере их импорта или «загрузки».
Читать дальше →

5 советов для прокачки своих навыков в Angular

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

Этим летом мы с Ромой запустили серию твитов с полезными советами и приемами по Angular. Сообщество тепло встретило эту инициативу, и я решил написать обобщающую статью.

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

Читать далее

Опыт создания нескольких 3д сцен без перезагрузки страницы (three.js)

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

Что делаю


Для личного проекта потребовалось найти решение, для работы с некоторым количеством разных gltf моделей.


Небольшой опыт работы с three.js у меня был, поэтому, после ознакомления с примерами GLTFLoader, была выбрана именно эта библиотека.


Данные о сценах хранятся в отдельном json файле и содержат информацию о пути к сцене, освещении, маршруте камеры и т.д. но в данном материале они нас интересуют в меньшей мере.


В теории было необходимо рисовать подряд несколько сцен. На практике все оказалось несколько сложней.

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