Обновить
128K+

JavaScript *

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

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

Визуальный редактор писем на React+Redux. Обзор, пример использования и расширения

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

Введение


Всем привет! Не так давно мне поступила задача встроить визуальный редактор email в наш сервис внутренней рассылки, ибо людям надоело набирать html руками и компоновать валидные шаблоны для писем. Побродив по интернету, я нашёл 2 редактора, которые, как мне тогда казалось, прекрасно подойдут для этих целей. Ссылки на них приведу в конце топика. Изучив их более внимательно (EmailEditor написан с использованием jQuery, который я в своё время неплохо изучил, а Mosaico был на KnockoutJS, с ним я знаком лишь поверхностно), я остановился на EmailEditor, и снова окунулся в то дерьмо из которого год назад так успешно выбрался с помощью Angular и Ionic, а именно — файлы по 2-3к строк, повсеместное и рандомное изменение DOM различными способами из различных мест и т.д., ну вы меня понимаете).


Потратив больше месяца на попытки пофиксить все баги, запилить нужные нам для рассылки строительные блоки и прочее, я сдался… Решил попробовать Mosaico и даже начал активно изучать Knockout, но проблема в том, что этот монстр (я про Mosaico) был настолько сложно написан, что EmailEditor показался не таким уж и плохим. Плюс ко всему, а точнее минус, у Mosaico практически нет вменяемой документации и если в первом я интуитивно понимал как всё работает и как создать свои блоки, то тут никакая интуиция мне не помогла. Возможно, просто не хватило мозга, терпения и желания разбираться, не знаю, просто гляньте на досуге исходники этих редакторов… А сроки поджимали...


Что же делать?!

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

Пишем плагин для Babel

Время на прочтение6 мин
Охват и читатели8K
Модульность прочно обосновалась в мире javascript. Однако, при всех плюсах, писать в каждом файле одни и те же импорты — утомляет. А что, если убрать подключение часто используемых модулей в сборщик, а в коде использовать их как глобальные переменные? Выглядит, как задача для babel-плагина. Что же, давайте вместе напишем такой плагин, попутно разбираясь, как работает babel.

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

Понимание Array.prototype.reduce() и рекурсии на примере яблочного пирога

Время на прочтение4 мин
Охват и читатели21K
У меня были проблемы с пониманием reduce( ) и рекурсии в JavaScript, так что я написал эту статью чтобы объяснить их в первую очередь себе (эй, смотрите, это же рекурсия!). Эти концепции имеют некоторые сходства с приготовлением яблочного пирога. Я очень надеюсь вы сочтёте мои примеры как полезными так и аппетитными.
image
Читать дальше →

«Время жизни вкладки может быть почти бесконечным»: Тимофей Чаптыков о JS-разработке в ВКонтакте

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


Этой весной в хабраблоге ВКонтакте написали «Мы готовы начать говорить о том, что находится за фасадом продукта». Мы не стали упускать возможность — и в преддверии JavaScript-конференции HolyJS, где разработчик VK Тимофей Чаптыков выступит с докладом, задали ему несколько вопросов.
Читать дальше →

«Готовимся к переходу на Angular 4»: Tinkoff.ru о JS-разработке

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

Как известно, клиенты Tinkoff.ru видят перед собой не отделение банка, а интерфейс сайта или мобильного приложения — так что для компании две эти вещи особенно важны. О мобильной разработке мы её недавно уже расспрашивали. А теперь в преддверии конференции HolyJS, где разработчик Tinkoff.ru Алексей Носов выступит с докладом, задали вопросы о JS/фронтенде: и самому Алексею, и руководителю HR-проектов компании Ольге Шпунтенко.
Читать дальше →

Стартапы и ненормальное программирование. TBD

Время на прочтение9 мин
Охват и читатели6.6K
В преддверии HolyJS мы обсудили проблемы стартапов, географические отличия разработки и влияние open source на отрасль с Джорджем Мандисом (George Mandis). В свое время он уже доказал на практике, что для разработчика на самом деле не важны политические границы и географические координаты, на протяжении нескольких лет работая из разных стран мира. А сегодня решил поделиться с нами своими наблюдениями.

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

Обзор изменений в новом мажорном релизе Node 8

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

30 мая 2017 года в 23:00 по московскому времени вышел новый долгожданный мажорный релиз Node.js 8.0.0. Именно эта линейка версий за номером 8 в октябре 2017 перейдет в Long Term Support — цикл длительной поддержки. Предлагаю вашему вниманию небольшой обзор того огромного количества изменений и дополнений, вошедших в этот релиз.


  • npm 5 (lock-файл!)
  • V8 5.8
  • Node.js API (N-API)
  • async_hooks
  • WHATWG URL парсер
  • повышение безопасности буфера
  • упрощенная промисификация
  • статичные коды ошибок
  • и многое другое!
Читать дальше →

CSS в JavaScript: будущее компонентных стилей

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


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


Чтобы получить больше информации о проблемах CSS, решаемых в JavaScript, вы можете посмотреть презентацию «React CSS в JS» (React CSS in JS), а для того чтобы изучить улучшение производительности с помощью Aphrodite, прочитайте статью Inline CSS at Khan Academy: Aphrodite. Если же вы хотите узнать больше о лучших практиках CSS в JavaScript, ознакомьтесь с руководством Airbnb (Airbnb’s styleguide).


Здесь речь пойдет об использовании встроенных стилей JavaScript для создания компонентов, позволяющих решить основные проблемы дизайна, о которых я рассказывал ранее в статье «Прежде чем осваивать дизайн, необходимо ознакомиться с основами» (Before you can master design, you must first master the fundamentals).

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

Must see: видеозаписи митапа MoscowJS 37

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

В четверг, 25 мая, в офисе Avito прошла очередная встреча сообщества фронтенд-разработчиков MoscowJS. Обсуждали отладку анимации, создание WebGL визуализации, сборку webpack’ом и код-ревью. Сегодня публикуем видеозаписи докладов — профессионалам будет интересно. Приятного просмотра!

Node.js и cote: простая и удобная разработка микросервисов

Время на прочтение17 мин
Охват и читатели33K
Многие считают, что микросервисы — это очень сложно. На самом же деле, при правильном подходе, это совсем не так.

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

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

Создаем свой Angular 2

Время на прочтение20 мин
Охват и читатели17K
Здравствуйте, в этой статье описан механизм работы Angular 2. Сегодня мы заглянем под капот популярного фреймворка.
Читать дальше →

Mockанье зависимостей в node.js приложениях

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

Mocks, fakes, and stubs — три столпа юнит тестирования. Конечно же все знают что это такое, как солить и когда есть. Я честно тоже так думал, пока не столкнулся с действительностью, под которую мне пришлось немного прогнуться.


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


Component = proxyquire.noCallThru().load(‘../Component’, {
 
     ‘../../core/selectors/common': { getData }

}).default;
Читать дальше →

Исчерпывающее руководство по использованию HTTP/2 Server Push

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


Привет! Меня зовут Александр, и я – фронтенд-разработчик в компании Badoo. Пожалуй, одной из самых обсуждаемых тем в мире фронтенда в последние несколько лет является протокол HTTP/2. И не зря – ведь переход на него открывает перед разработчиками много возможностей по ускорению и оптимизации сайтов. Этот пост посвящён как раз одной из таких возможностей – Server Push. Cтатья Джереми Вагнера показалась мне интересной, и поэтому делюсь полезной информацией с вами.

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

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

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

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

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

Управление мышью как в Agar.io на Phaser.js

Время на прочтение2 мин
Охват и читатели9K
Доброго времени суток, Хабр! Совсем недавно появилась цель создать аналог игры Agar.io. Чтобы не терять время и не усложнять себе жизнь было решено, что проще и быстрее будет делать игру используя готовый движок для разработки игр.

Мой выбор пал на phaser.js, так как, мне показалось, по нему больше всего есть обучающего материала и он достаточно быстрый так как построен на библиотеке Pixi.js.

В этой части я расскажу как реализовать управление мышью. В конечном итоге мы получим вот такой результат:

Жизнь и удивительные приключения в экзотических JavaScript окружениях

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

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


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

Путь к трансдьюсерам на чистом JavaScript

Время на прочтение13 мин
Охват и читатели18K
Если вы наслышаны о так называемых «трансдьюсерах», но до сих пор не применяете их в JavaScript-разработке, сегодня у вас есть шанс найти ответы на вопросы: «Что такое трансдьюсеры?» и «Как ими пользоваться?». Это позволит вам понять, нужны ли они в ваших проектах, и, если нужны — поможет приступить к их использованию.



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

Как добиться повторного использования React компонентов (Перевод)

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


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

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

Формы и кастомные поля ввода в Angular 2+

Время на прочтение10 мин
Охват и читатели29K
imageМеня зовут Павел, я фронтенд-разработчик Tinkoff.ru. Наша команда занимается разработкой интернет-банка для юридических лиц. Фронтенд наших проектов был реализован с применением AngularJS, с которого мы перешли, частично с использованием Angular Upgrade, на новый Angular (ранее позиционировался как Angular 2).

Наш продукт предназначен для юридических лиц. Такая тематика требует множества форм со сложным поведением. Поля ввода включают в себя не только стандартные, реализованные в браузерах, но и поля с масками (например, для ввода телефона), поля для работы с тегами, ползунки для ввода числовых данных, различные выпадающие списки.

В этой статье мы заглянем «под капот» реализации форм в Angular и разберёмся, как создавать кастомные поля ввода.

Предполагается, что читатель знаком с основами Angular, в частности, со связыванием данных и внедрением зависимостей (ссылки на официальные гайды на английском языке). На русском языке со связыванием данных и основами Angular в целом, включая работу с формами, можно познакомиться здесь. На Хабрахабре уже была статья про внедрение зависимостей в Angular, но нужно учитывать, что написана она была задолго до выхода релизной версии.
Читать дальше →

Vue.js для сомневающихся. Все, что нужно знать

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


В данной статье речь пойдет о замечательном фронтенд фреймворке Vue.js. Как вы видите, статья называется «Vue.js для сомневающихся», и, если вы до сих пор не могли решиться попробовать Vue.js на практике, то надеюсь, что после прочтения вы все-таки на это решитесь.
Читать дальше →