Корзунов Антон
@kashey
javascript, webgl, maps, react, орфография(нет)
Information
- Rating
- Does not participate
- Location
- Sydney, New South Wales, Австралия
- Date of birth
- Registered
- Activity
javascript, webgl, maps, react, орфография(нет)
Information
Обожаю БЕМ с точки зрения CSS, что его js релизации всегда вызывали если не тошноту, то удивление.
While habr should(and going to) expand to the western world rapidly — we are unable to help him.
2. Ну это вроде как «локальность». Никогда проблем с этим не было.
shallow
отличное решение, потому что внешние зависимости, даже если и есть, просто не важны и не используются. Плохо то, что по принципам своей работы, shallow совсем не приспособлен кrenderProp
, который используется все чаще и чаще.Сам React, а точнее react-testing-tool и компания так не умеет, и всегда рендерит все от начала до конца. Тут уже вступают в дело моки (или Boundary), которые могут ограничить и изолировать тесты.
Но моки это сложная тема — мокать можно по разному и в разных местах. Для (очень) многих моки в тестах Реакта это
fetch-mock
, который течет через пару слоев абстраций. Мокать можно только dependency, селекторы и ресолверы. В общем jest.mock, а еще лучше proxyquire, который позволяет мокать только прямые зависимости.Проблема опять же в изоляции. В
proxyquire
/jest
такого просто нет, вmockery
она работает как говно, и только вrewiremock
ее становится возможным использоваться, как и типизированные моки.Специально проверил — render callback это старое имя render prop. Не слот.
> И сравнивать юнит с интаграционными тестами и говорить что одни нужнее других, это свидетельство о нездоровом непонимании процесса разработки.
Вводная часть статьи как раз про то, что одни нельзя заменить другими, и оба нужны в форме симбиоза имени Пирамиды Тестирования. Не в том плане что каждый следуйщий уровень уже и тормознее, а в том, что каждый следуйший уровень опирается на предыдущий.
И почему декларативность нарушается? Наоборот — в одной половине четко видно где что-то будет, а в другой видно что именно, без необходимости искать конкретное место подключения.
Лично я знаю только одного человека, который Дэна, скажем так, не любит. За то что он подорвал все устои, и все провереренные десятилетиями патерны в труху и не раз — github.com/gaperton.
Для меня Дэн всегда был больше не про «знания», а про «эмпатию». За что его все и любят. Но слепо верить одному человеку, тем более с достаточно узким (и коротким) опытом — странно.
— «клиент» не будет менять код на лету, это фича чисто для разработки
— «девелопер» тоже может обновить страницу
— решение для сохранение данных форм между просмотрами лежит в совершенно другой плоскости.
— таким образом React-Hot-Loader никак не может ни помочь, ни помешать удобству интерфейсов.
— и не стоит забывать — что «better UX» это работа дизанейнера, тестировщика, менеджера, маркетолога и програмиста. И програмист в конце списка.
— без двух :approved: PR не замержить, привет SOX compliance.
— потом еще SRE проверит что было закомичено перед релизом
— потом еще внешние аудиторы посмотрят
— потом коллега git history откроет.
Тем более в Австралии(откуда я и пишу) наркомания иногда заходит так далеко, что только «внешние аудиторы», в роли которых часто выступает государство, может мержить в мастер.
Тут мышка не проскочит, не то что бэкдор какой-то.
Есть вырожденный случай для IE(IE8) конкретно для DOM обьектов, где для них _есть_ WeakMap (а для не-DOM его нет).
Насчет immutable — все верно. Если ключа нет, и ключем является обьект — его изменение изменит ключ. На безрыбье и рак — рыба.
Передача классов между в компоненты, в случае следовании БЕМ-нотации, обязательна и полезно.
Класс компонента определяет его как Блок, класс передаваемый ему из-вне — как Элемент.
Их свойства не пересекаются, и никогда не конфликтуют.
> react/no-array-index-key
Очень часто у «данных» нет ID. Тут поможет библиотека типа react-uid, которая превратить в key сами данные.
Нет разницы что это Context.Consumer, React-Powerplug, VisibilitySensor или Timer — render prop унифицирует интерфейс, и задача только сделать его удобным.
Я для «удобства» использую react-gearbox.
recompact — ничем не хуже
Но меня не оставляет чувство, но их время уже немного прошло.
Так вот — настоящий фронтенд именно у нее. И жизнь веселее. И задачи более интересные, более «емкие», охватывающие просто все сферы.