
Stanislav
03.05.2017
19:04:25
И это все за 40 рабочих часов.

Sergey
03.05.2017
19:04:47
в день )

Denis
03.05.2017
19:26:34
Все уже заценили? :) https://github.com/facebook/prepack

Vladimir
03.05.2017
19:27:03
Странная штуковина

Google

Nikolay
03.05.2017
19:28:52
по мне так это ахуенная штука

Vladimir
03.05.2017
19:31:18
Он охуенная как и всякая интересная игрушка
Вопрос только когда и как ее использовать, и какой профит будет

Felix
03.05.2017
19:32:21
когда - когда будет готова
как - в виде лоадера для вебпака или что ты там юзаешь
профит - модно & заебись

Vladimir
03.05.2017
19:32:36
> @guattari
профит - модно & заебись
классика

Ilya
03.05.2017
19:34:31
"Computations that can be done at compile-time instead of run-time get eliminated" ?? я был уверен, что этим занимается компилятор ??

Vladimir
03.05.2017
19:35:10
Занимается, но он делает это в меньше степени и не ahead of time
Идея то понятна
Вопрос соотношения профита и стоимости

Felix
03.05.2017
19:35:51
не похуй сколько билд идет?
ну прибавит 200-500-1000 мс

Vladimir
03.05.2017
19:36:30
Речь не об этом
Речь о том, что это еще один трансформ, который добавляет потенциально свою порцию геморроя к отладке и багов

Google

Vladimir
03.05.2017
19:37:24
А еще он явно увеличивает размер бандла

Felix
03.05.2017
19:37:38
что за увеличивает?

Дмитрий
03.05.2017
19:37:39
Ого, крутая штука

Felix
03.05.2017
19:37:40
он уменьшает
своя порция геморроя - ну пока да, будет стабильным - будет норм, если что-то сломается - можно отключить просто
зато через год тебя будут считать лохом, если не подключил еще prepack

Дмитрий
03.05.2017
19:39:44
Засекаем время

Felix
03.05.2017
19:39:53
а главное в джаваскрипт разработке собственно - это чтобы лохом не назвали

Vladimir
03.05.2017
19:40:03
Оптимизирует скорость в ущерб в том числе размеру

Felix
03.05.2017
19:40:21
а, ну такое да

Дмитрий
03.05.2017
19:40:41
Ого!!

Felix
03.05.2017
19:40:42
ну думаю там будет какой-то компромисс, вообще они его вроде для нейтива в основном делают

Дмитрий
03.05.2017
19:40:48
Я джва года такое ждал
Хотел уже сам плагин для бабеля пилить

Ilya
03.05.2017
19:41:06

Vladimir
03.05.2017
19:41:08

Felix
03.05.2017
19:41:33

Pavel
03.05.2017
19:42:56

Дмитрий
03.05.2017
19:43:47
Выглядит впечетляюще, да
Ну я серьезно, реально в самых критичных местах есть мотивация писать с нормальными человеческими .map, а в результате получать всё в развёрнутом виде, особенно если цикл на порядок покороче)

Google

Дмитрий
03.05.2017
19:59:29
Попробовал разуплотнить либу для big integer
Побочный эффект — с этой штукой у меня получился платформо-зависимый js
var bpe=0; //bits stored per array element
var mask=0; //AND this with an array element to chop it down to bpe bits
var radix=mask+1; //equals 2^bpe. A single 1 bit to the left of the last bit of mask.
//initialize the global variables
for (bpe=0; (1<<(bpe+1)) > (1<<bpe); bpe++);
//bpe=number of bits in the mantissa on this platform
bpe>>=1; //bpe=number of bits in one element of the array representing the bigInt
mask=(1<<bpe)-1; //AND the mask with an integer to get its bpe least significant bits
radix=mask+1; //2^bpe. a single 1 bit to the left of the first bit of mask
Соответственно, на этапе вычислений это всё чётко разворачивается)

Pavel
03.05.2017
20:05:26
еще плюс - обфускация кода?:)

Дмитрий
03.05.2017
20:05:40
Не, код наоборот понятный, только длинный, офк
Даже понятнее чем в цикле, прямо последовательно видишь что происходит с переменной
Короче вывод — через такую штуку можно прогонять только код проекта, а не бандл целиком, потому что неизвестно, у кого какие побочные эффекты в циклах в node_modules

Nikolay
03.05.2017
20:14:06
я бы узкие места прогонял
на которых самый большой дроп

Vladimir
03.05.2017
20:15:07
Реально узкие места это не спасет

Дмитрий
03.05.2017
20:15:11
Ну вот я прогнал)) Он мне развернул цикл в котором вычилсяется длина мантиссы для платформы ?

Дмитрий
03.05.2017
20:15:34
У .map большой оверхед

Vladimir
03.05.2017
20:16:15

Nikolay
03.05.2017
20:16:52
имитатор индусского кода )

Дмитрий
03.05.2017
20:23:23

Vladimir
03.05.2017
20:24:17
Я бы сказал, что это как раз исключено
https://twitter.com/bmeurer/status/859854279573729280
Упс

Ҫѐҏӗѫӑ
03.05.2017
20:31:33
да понятно что это в прод ща нельзя

Google

Vladimir
03.05.2017
20:31:54
Да об этом речь вообще не идет
Вопрос, надо ли это в прод вообще

Ҫѐҏӗѫӑ
03.05.2017
20:32:21
ну флоу некоторые тянут же

Vladimir
03.05.2017
20:32:43
В прод? нет

Ҫѐҏӗѫӑ
03.05.2017
20:34:38
кстати, а в этом году на реакт европ едет кто-то?

Сергей
03.05.2017
21:12:46
Минутка хаков: как в хроме из консоли менять состояния и свойства у компонентов? Т.е. взять уже отрендеренную страницу и в консоли менять их? Это можно сделать через раширение для хрома, наверняка можно так "напрямую"

Admin
ERROR: S client not available

Дмитрий
03.05.2017
21:14:02
react dev tools

Сергей
03.05.2017
21:20:03
Да, он установлен. Но если предположить что его нет, а есть чисто консоль хрома и отрендеренная страница. И сделать что-то типа document.getElementById('blabla').setState({...})

Дмитрий
03.05.2017
21:21:38
Предположим, ты в арктике, а из инструментов есть только штопор и хром без react dev tools... ?
Если тебе нужно изменять стейт из глобальных вызовов, то есть redux, например

Сергей
03.05.2017
21:25:53
Задача с другой стороны: есть отрендеренный сайт на рекате(client side rendering only), нужно его скраулить и вытащить необходимую информацию.
Грубо, там есть две страницы:
1) Страница со списком айтемов
2) Страница каждого айтема
На странице (1) появляется нужная мне информация при наведении на айтем(она есть также на странице айтема). Это появление реалиовано на js через установку определенного состояния. Вот я и хочу насильно установить это состояние и спарсить всю информацию с этой одной страницы. Иначе придется заходить на каждую страницу (2) и оттуда брать, это намного больше запросов получится

Ярослав
03.05.2017
21:26:05
можно получить доступ через хук и страдать

Pavel
03.05.2017
21:26:30
и напрямую у апи спрашивать

Сергей
03.05.2017
21:28:46
В robots.txt прописан запрет на url этих апи. Я пока хочу казаться честным роботом

Pavel
03.05.2017
21:29:39
ну запиши полный курс network'a
чтоб выглядело, что ты юзер
в чем проблема то

Сергей
03.05.2017
21:30:58
В принципе да, неплохой вариант и со стороны того сервера будет похоже на честный рендер

Google

Viktor
03.05.2017
21:49:07
На тему prepack-а хотелось бы упомянуть плагин https://github.com/codemix/babel-plugin-macros
Конечно поскромнее будет? , и да и не особо развивается
Если объявить функцию с label-ом macro: , инлайнит ее тело в место вызова функции. Вполне подходит для развертки map/filter/... в обычные циклы, да и не только

Vladimir
03.05.2017
22:26:34
sup, я к вам за советом пришёл
есть ContextProvider
который по сути pubsub
как вы на него тесты бы написали?

Viktor
03.05.2017
22:32:41

Vladimir
03.05.2017
22:32:56
ну хз

Viktor
03.05.2017
22:33:05

Vladimir
03.05.2017
22:33:53
либо выбрать хайпнутый и ? развиваемый фейсбуком проект, либо либу без поддержки
и что оно новое значение пришло вниз по react subtree

Viktor
03.05.2017
22:42:34
Полагаю замокать sinon-ом у класса subtree-компонента метод componentWillReceiveProps(nextProps, nextContext) ?

Vladimir
03.05.2017
22:48:04
это ок
я не понимаю как перерендерить subtree
и не трогать остальное

Viktor
03.05.2017
23:03:27
Честно говоря я еще только разбираюсь с react-ом, поэтому не настолько глубоко в теме.
Насколько я понимаю все что внутри(как прямо, так и косвенно) провайдера - subtree
Некоторые ветки в subtree подписаны на контекст - они перерендерятся. Их внутренности тоже(если конечно не PureComponent)
На промежуточных компонентах от провайдера до подписанных subtree рендеринг не запускается
Про какое "остальное" идет речь?
Про промежуточные будет верно, если провайдер возвращает shouldComponentUpdate()=false, во всех случаях, кроме смены this.props.children