Обновить
256K+

JavaScript *

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

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

Moscow JS 44 — анонс

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

Привет. 21 февраля в офисе Авито пройдёт Moscow JS 44, неформальная встреча JavaScript-разработчиков. Обсудим инструменты для бойлерплейтинга, форматы сжатия протокольного уровня в http, а также Acceptance testing и BDD. Регистрируйтесь на встречу и приглашайте коллег. Под катом — тезисы выступлений, ссылки на регистрацию (upd: завершена, закончились места) и видеотрансляцию митапа.


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

Как дебажить фронтенд и бекенд: пошаговая инструкция

Время на прочтение6 мин
Охват и читатели71K
Привет, Хабр! Представляю вам перевод статьи "How to debug javascript in Chrome quick and easy ".

В этом посте мы научимся дебажить JavaScript на фронт- и бекенде с помощью Chrome DevTools и VS Code.
Читать дальше →

Подробности о JavaScript-объектах

Время на прочтение10 мин
Охват и читатели29K
Автор материала, перевод которого мы сегодня публикуем, говорит, что в JavaScript-объектах содержится много такого, о существовании чего можно и не подозревать, пользуясь ими в повседневной работе. Объекты в JavaScript очень легко создавать, с ними удобно работать, они кажутся понятными и гибкими сущностями, и многие программисты попросту не задумываются о том, что на самом деле устроены объекты не так уж и просто.


NB: Информацию из публикации на практике следует применять крайне аккуратно и под присмотром более опытных коллег.
Читать дальше →

У дизайнера новая идея? Что может быть проще

Время на прочтение11 мин
Охват и читатели5.5K
Привет, хабровчанин! Дизайнеры люди идейные, а заказчики с их бизнес-требованиями, тем более.

Представь, что ты сваял свой самый лучший UIkit на свете на самом крутом %вставить свое% JS фреймворке. Казалось бы, там есть все, что нужно проекту. Теперь-то ты сможешь пить кофе, а все новые задачи закрывать накидыванием компонентов на страницу. Еще лучше, если ты нашел такой UIkit на помойке на просторах NPM и он идеально соответствует текущему UX/UI и его потребностям. Фантастика!

И действительно… кого я обманываю? Твое счастье, скорее всего, будет недолгим. Ведь когда дизайнер прибежит с талмудом новых UI-решений для очередной страницы или «спец-проекта», что-то по-любому пойдет не так.

В этот момент перед разработчиком встает вопрос «DRY или не DRY»? Стоит ли как-то кастомизировать существующие компоненты? Да еще так, чтобы не отхватить регрешн на существующих кейсах. Или же действовать по принципу «работает — не трогай» и написать новые компоненты с нуля. При этом, раздувая UIkit и усложняя поддержку.

Если ты, как и многие, бывал в такой ситуации, загляни под кат!


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

Работа с callbacks в React

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

За время своей работы, я периодически сталкивался с тем, что разработчики не всегда четко представляют, каким образом работает механизм передачи данных через props, в частности колбеков, и почему их PureComponents обновляется так часто.


Поэтому в данной статье мы разберемся, как передаются callbacks в React, а также обсудим особенности работы event handlers.

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

Redux. Простой как грабли

Время на прочтение5 мин
Охват и читатели204K
Мне уже доводилось заглядывать в репозиторий библиотеки redux, но откуда-то появилась мысль углубиться в его реализацию. Своим в некотором роде шокирующим или даже разочаровывающим открытием я хотел бы поделиться с сообществом.

TL;DR: базовая логика redux помещается в 7 строк JS кода.

О redux вкратце (вольный перевод заголовка на гитхабе):
Redux — библиотека управления состоянием для приложений, написанных на JavaScript.

Она помогает писать приложения, которые ведут себя стабильно/предсказуемо, работают на разных окружениях (клиент/сервер/нативный код) и легко тестируемы.
Я склонировал репозиторий redux, открыл в редакторе папку с исходниками (игнорируя docs, examples и прочее) и взялся за ножницы клавишу Delete:

  • Удалил все комментарии из кода
    Каждый метод библиотеки задокументирован с помощью JSDoc весьма подробно
  • Убрал валидацию и логирование ошибок
    В каждом методе жёстко контролируются входные параметры с выведением очень приятных глазу подробных комментариев в консоль
  • Убрал методы bindActionCreators, subscribe, replaceReducer и observable.

    … потому что мог. Ну или потому что поленился писать для них примеры. Но без корнер-кейсов они ещё менее интересны, чем то, что ждёт вас впереди.

А теперь давайте разберём то, что осталось
Читать дальше →

Что можно узнать при разработке аудио плеера для разных браузеров

Время на прочтение8 мин
Охват и читатели9.6K
Эта история началась примерно 1.5 года назад. Связана она с проигрыванием музыки в различных браузерах и платформах, на которых они запускаются. Путь полный “боли и страдания” осознания того, что легкая на первый взгляд задача может оказаться не такой уж и легкой, а “незначительные” детали, которым не придаешь значения в самом начале, могут повлиять на всё.
Читать дальше →

React & БЭМ – официальная коллаборация. Часть историческая

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

Перед вами история интегрирования БЭМ-методологии в React-вселенную. Материал, который вы прочитаете, построен на опыте разработчиков Яндекса, развивающих самый масштабный и нагруженный сервис в России — Яндекс.Поиск. Мы никогда раньше не рассказывали настолько подробно и глубоко о том, почему делали так, а не иначе, что нами двигало и чего мы действительно хотели. Внешнему человеку доставались сухие релизы и обзоры на конференциях. Лишь в кулуарах можно было услышать нечто подобное. Я как соавтор негодовал из-за скудности информации снаружи каждый раз, когда рассказывал о новых версиях библиотек. Но в этот раз мы поделимся всеми подробностями.



Все слышали о методологии БЭМ. CSS-селекторы с подчёркиваниями. Компонентный подход, о котором говорят, имея в виду способ написания CSS-селекторов. Но про CSS в статье не будет ни слова. Только JS, только хардкор!

Когда использовать var, let и const в Javascript [перевод статьи Tyler’а McGinnis]

Время на прочтение8 мин
Охват и читатели57K
Привет, Хабр! Представляю вашему вниманию перевод статьи «var vs let vs const in JavaScript» автора Tyler McGinnis.

image

В этой статье вы узнаете 2 новых способа для создания переменных в Javascript (ES6), let и const. На протяжении этой статьи мы рассмотрим разницу между var, let и const, а также смежные темы такие как: “область видимости функции против блочной области видимости“, “поднятие” переменных и иммутабельность.

Деплоим изоморфное веб-приложение на примере Nuxt.js

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

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

ECMAScript Proposal: Array.prototype.{flat,flatMap}

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

Нововведения в ECMAScript



Здравствуйте читатели Хабр. Предлагаю вашему вниманию интересную штуку которая в скором времени появится уже появилась в стандарте ECMAScript. Она уже доступна почти во всех браузерах и весь функционал тоже. Это нововведение всего лишь сахар-обертка и ее можно решить своими средствами и это я вам тоже покажу. Но этот сахар позволит нам писать кода меньше, ведь мы это так любим. Итак, добавляется базовые функции к массиву, в данном случае их 2, которые позволят нам разворачивать многоуровневые массивы в один или более уровней вложенности. Да да и все это как говориться из коробки

Качество кода фронтенда в HH

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

Headhunter — продуктовая компания, нам очень важно качество кода. Чем он лучше, тем быстрее мы можем выпускать новые бизнес фичи и чаще радовать пользователей.


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


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

Проблемы использования сервиса Яндекс.Метрика

Время на прочтение1 мин
Охват и читатели9.2K
В последние дни наблюдаем весьма странное поведение сервиса Яндекс.Метрика. Некоторые сайты, в которых нужно вводить/выбирать пользовательские данные, стали вести себя не очень адекватно. При полной очистке истории браузера проблема пропадает, однако далее всё возобновляется.

Суть ошибки, как видно из скриншотов, в JS-ошибке скрипта, расположенного по адресу mc.yandex.ru/metrika/tag.js. Сейчас (11:41 04.02.2019 по Москве) эту ошибку можно увидеть, например, на сайте Аэрофлота, попробовав с морды сайта выбрать направление полёта:


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

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

Обработка нажатий клавиш ака shortcuts и дебаггинг

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

Привет! Речь пойдет про горячие клавиши в WEBAPI + JavaScript, рассмотрим их способы организации и проблемы, возникающие прежде всего в больших приложениях.


Рассмотрим способы обработки клавиш на конкретной задаче.


“Задача”


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


ParentController в котором есть два компонента со своими состояниями и стейтом. Controller1 и элемент, использующий CTRL+SHIFT+F для поиска по сайту, и Controller2 со своим DOM элементом, который является локальной областью, при наличии которой поиск осуществляется внутри нее. При этом они одновременно могут быть на экране. Ниже приведено несколько способов решения данной проблемы.

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

Работа с часовыми поясами в JavaScript

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


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

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

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

Дайджест свежих материалов из мира фронтенда за последнюю неделю №350 (28 января — 3 февраля 2019)

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


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

Основы реактивного программирования с использованием RxJS

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

Часть 1. Реактивность и потоки


Данная серия статей посвящена реактивности и ее применению в JS с использованием такой замечательной библиотеки как RxJS.

Серия статей «Основы реактивного программирования с использованием RxJS»:



Для кого эта статья: в основном, здесь я буду объяснять основы, поэтому в первую очередь статья рассчитана на новичков в данной технологии. Вместе с тем надеюсь, что и опытные разработчики смогут почерпнуть для себя что-то новое. Для понимания потребуются знания js(es5/es6).

Мотивация: впервые я столкнулся с RxJS, когда начал работать с angular. Именно тогда у меня возникли сложности с пониманием механизма реактивности. Сложности прибавлял еще тот факт, что на момент начала моей работы большинство статей было посвящено старой версии библиотеки. Пришлось читать много документации, различных мануалов, чтобы хоть что-то понять. И только спустя некоторое время я начал осознавать, как “все устроено”. Чтобы упростить жизнь другим, я решил разложить все по полочкам.
Читать дальше →

Сохранения данных пользователя после перезагрузки страницы

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

Представим себе, что вы пишите таск-менеджер. Приложение должно работать как нативное: работать в офлайне также как в онлайне.


Основная концепция


Наш главный инструмент в построении такого приложения – localstorage.


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

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

Кастомный виджет googleTranslate для сайта

Время на прочтение5 мин
Охват и читатели69K
Перед тем как преступить к написанию данной статьи, я решил посетить страницу где генерируется Google Translate Widget, чтобы узнать о возможных изменениях и увидел данное сообщение:
Получить доступ к переводчику сайтов больше нельзя. Это никак не отразится на тех, кто уже установил соответствующий плагин.

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

Как будет выглядеть наш пример:


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

JavaScript: Публичные и приватные поля классов

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

Несколько предложений расширяют существующий синтаксис классов в JavaScript новой функциональностью. Эта статья объясняет новый синтаксис публичных полей классов в V8 v7.2 и Chrome 72, а также грядущих приватных полей.


Вот пример кода, который создает экземпляр класса IncreasingCounter:


const counter = new IncreasingCounter();
counter.value;
// logs 'Getting the current value!'
// → 0
counter.increment();
counter.value;
// logs 'Getting the current value!'
// → 1

Отметим, что обращение к value выполняет некоторый код (вывод сообщения в лог) перед тем, как вернуть значение. Теперь спросите себя: как бы Вы реализовали этот класс на JavaScript?

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