These are chat archives for dev-ua/reactjs

18th
Jan 2016
prog-man
@prog-man
Jan 18 2016 08:06

Всем привет.

Подскажите пжл, по этому вопросу http://ru.stackoverflow.com/questions/483581/reactjs-и-НЕ-spa

stanleer
@stanleer
Jan 18 2016 08:22
@prog-man в чем боязнь спа? seo?
prog-man
@prog-man
Jan 18 2016 08:25
@stanleer нет, очень много логики на стороне сервера через API PHP-фреймворка.
RBAC и прочее.
stanleer
@stanleer
Jan 18 2016 08:26
@prog-man а причем тут логика отрисовки, часть е еможно вынести в клиент на уровне if
мне кажется не так уж и слжно
и можно почасям выносить
prog-man
@prog-man
Jan 18 2016 08:28
RBAC например определяет доступ к тому или иному действию на уровне ролей - не вариант тащить весь этот функционал на сторону клиента.
stanleer
@stanleer
Jan 18 2016 08:29
ну тогда не использовать роутинг и работать по сыбитиям на объектах наверн
prog-man
@prog-man
Jan 18 2016 08:31
я так понимаю что ReactJs можно использовать либо в SPA либо и изоморфных приложениях, использовать его в таком варианте, где рендеринг html на стороне сервера (через php) и далее динамика над этим представлением через ReactJs на стороне клиена, как минимум ужасно? Т.е. как с jQuery не получится?
stanleer
@stanleer
Jan 18 2016 08:34
@prog-man помне так реакти есть jQuery только намного продвинутей )
prog-man
@prog-man
Jan 18 2016 08:38

@stanleer я хоть еще и не особо знаком с ReactJS, но мне тоже очень нравится он )) Но вот такой вопрос возник на корню. Потому что у меня проект написан именно в таком виде, где вся логика и рендер html на сервере, а уже потом над тем, что отрендерил сервер динамика с помощью jQuery.

И поэтому думаю, а можно ли оставить все как есть, только jQuery заменить на ReactJS, или нет такого варианта.

stanleer
@stanleer
Jan 18 2016 08:38
Я сам мало с реакт еще знаком )
@prog-man а зачем те на фронте роли?
они тока в лк нужны
prog-man
@prog-man
Jan 18 2016 08:39
@stanleer они нужны и в ЛК на фронте и сплошь и рядом в Админке (бэкенд)
stanleer
@stanleer
Jan 18 2016 08:39
@prog-man я тока про фронт ща
@stanleer ли у тя проект неразделен? фронт лк бекенд все единое?
prog-man
@prog-man
Jan 18 2016 08:40
@stanleer да вот у меня как раз больше интерактивности нужно именно в админке, по большей части именно там у меня спагетти jQuery километровые.
stanleer
@stanleer
Jan 18 2016 08:41
@prog-man вся проблема что у тебя проект одно единое целое
а так тыбы мог отдельно фронт отдельно лк отдельно бекенд переписывать последовательно
prog-man
@prog-man
Jan 18 2016 08:43

ли у тя проект неразделен? фронт лк бекенд все единое?

да, единое целое,

@stanleer ладно, видимо как с jQuery (как не крути) не получится, спасибо.
Eugene Zharkov
@2j2e
Jan 18 2016 10:38
Редуксаны, вот допустим у нас есть one-direction flow, все ок, мне отдельно не нравится валить туда абсолютно всю инфу о состоянии компонента, а только уже ту, которая проверена. Допустим у вас есть словарь в глобальном стейте с горой данных ключ значение, ключ-значение. И вам нужно сделать помощник, который может выдать по ключу значение.
В старом мире, есть сервис Dict, в нем метод find и он сам себя обслуживает, сам все знает что нужно подключать.
Как с редуксом быть, ведь о стейте знает только экшен/редюсер?
Если мне нужно на форме показать значение из словаря, закидывать его через редюсер? А если мне нужно еще и редактировать его, то уже разделять на значения покажи/сохрани?
Terry Sahaidak
@terrysahaidak
Jan 18 2016 11:53
@prog-man подивись на фб, він ж не повністю на реакті, там окремі компоненти тільки
от як чат, всякі динамічні штуки (коменти, каунтери нотифікації, сама нотифікація), а решту ні
тому ти можеш спокійно юзати його не в якості спа, а як окремими частинками, які передбачають якусь взаємодію з сервером і оновлення
@2j2e а чому тобі просто в компонент не передати весь це словник, і вже в компоненті (якомусь контейнері) не побудувати логіку?
а оновляти вже щось по екшену, бо ти змінюєш стейт
наявність редакса не завжди повністю виключає наявності якогось стану компонентів
Terry Sahaidak
@terrysahaidak
Jan 18 2016 12:04
знаєте що таке біль?
це коли ти 3 години роздупляєшся з практично недокументованим компонентом RN ListView, а саме фішкою з StickySectionHeaders, читаєш код, дивишся приклади, пробуєш побудувати так само в себе, на основі своїх своєрідних даних, пишеш якусь логіку для правильного їх сортування, запускаєш, а воно не паше
а потім розумієш, що на Андроїді StickyHeaders ще ніхто не запілив
оце біль
ну тобто вони є, але вони не Sticky
:worried:
а в доках цього ніхто не написав, пише -- кросплатформенний
фігові доки
krasevych
@krasevych
Jan 18 2016 12:08
Всім привіт!
Я тут порівнював React i Angular 2 - знайшов такий проект для порівняння різних фреймворків - http://todomvc.com/
подивився на реалізацію React i Angular 2.
React - https://github.com/tastejs/todomvc/tree/gh-pages/examples/typescript-react
Angular 2 - https://github.com/tastejs/todomvc/tree/gh-pages/examples/angular2
Чому аплікуха на React в 3 рази більша ніж на Angular 2?
Eugene Zharkov
@2j2e
Jan 18 2016 12:12
потому что исходный код библиотек?
prog-man
@prog-man
Jan 18 2016 12:13

@terrysahaidak Тут вот какая штука получается:

  • На сервере рендерю полное представление страницы html (предположим в этом представлении есть 'фильтр товаров')
  • На клиенте имею ReactJs компонент этого 'фильтра товаров'

исходя из этого получаю такую проблему, что во первых мне нужно дублировать html код этого 'фильтра товаров' в точном соответствии и на сервере (при рендеринге всей страницы) и на клиенте в компоненте ReactJs, а самое главное во-вторых если мне через время нужно изменить html представление этого 'фильтра товаров', то мне придется его изменять и на сервере и на клиенте.

и если у меня таких компонентов на странице 30-40, а страниц в приложении 20-30, то это большая проблема.
krasevych
@krasevych
Jan 18 2016 12:20
@2j2e Я не враховував бібліотек
Eugene Zharkov
@2j2e
Jan 18 2016 13:01
@krasevych я глянул быстро, на ангуляре забили на выделение в отдельные сущности и сделали просто, на реакте решили сделать сложнее
принимать todomvc как реальное напутствие не стоит, это всего-лишь размышления о реализации какого-то человека
Terry Sahaidak
@terrysahaidak
Jan 18 2016 13:18

@krasevych бо таки мало хто юзає реакт в складі MVC
подивись краще на більш прийнятий підхід
https://github.com/rackt/redux/tree/master/examples/todomvc

@prog-man там десь був проект бачив, щоб на пхп робити серверний рендеринг, тобто тобі доведеться всього лиш написати свої компоненти, а потім при рендері шаблону викликати рендер тих компонентів, це щось типу буде як шаблонізатор)

prog-man
@prog-man
Jan 18 2016 13:57
@terrysahaidak ффф.., мне все таки привычнее на сервере обычным способом генерить html (серверными технологиями), а для динамики в таких случаях, все таки наверное jQuery останется впереди планеты всей. Либо сейчас на самом деле хочу попробовать следующее, на сервере генерить весь html, который не будет иметь динамики на клиенте (статический), все динамические элементы вынести в ReactJs компоненты - но все равно минус на лицо, если у пользователя отключен JS в браузере, то он всех этих элементов не увидит, только то, что отрендерил сервер. Но с другой стороны подумать, теряю только начальное их отображение (если бы их генерил на сервере), потому что даже если бы всю логику к ним сделать через jQuery, то при выключенном JS в браузере пользователя, они так и останутся статикой.
Eugene Zharkov
@2j2e
Jan 18 2016 14:31
@progm-man "если у пользователя отключен JS в браузере, " возможно в особых случаях к такому стоит прислушиваться, но в 2016 году пользователь который отключает JS, его можно расцениваться, как клиент, который не хочет пользоваться технологиями на протяжении 10 лет
а если он lynx использует, о нем то же думать?
prog-man
@prog-man
Jan 18 2016 14:37
@2j2e Просто если у пользователя отключен JS, то в случае серверных технологий пользователь все равно увидит контент, без интерактивного управления, но увидит. Если же упереться в подход, где на сервере генерится только основной layout с метатегами для SEO, а все остальное через JS затягивается, то пользователь ничего не увидит, либо заглушку. Но вообще да, в 2016 году с отключенным JS в браузере - это его проблемы, но тем не менее, ищу меньшее зло из возможных.
Kirill Yakovenko
@blia
Jan 18 2016 14:38
я поддерживаю работоспособность сайта с отключенным жс
Ruslan Abdullaev
@rajdee
Jan 18 2016 14:39
@prog-man если серверный рендер при помощи React, то пользователь получит полноценную страницу
ну, практически полноценную )
Kirill Yakovenko
@blia
Jan 18 2016 14:40
если программист это продумал
Terry Sahaidak
@terrysahaidak
Jan 18 2016 14:41
@prog-man тому я тобі й пропоную ту технологію, де клієнту буде віддаватись html, а коли догрузиться скрипт -- він стане динамічним
https://github.com/reactjs/react-php-v8js
prog-man
@prog-man
Jan 18 2016 14:41
@rajdee да я понимаю, я говорил в первом своем сообщении про SPA, изоморфные приложения, но так-же говорил, что у меня на сервере много логики крутится + RBAC - на основании всего этого я генерю html представление на сервере (серверными технологиями).
Kirill Yakovenko
@blia
Jan 18 2016 14:42
а в чем проблема нодой генерировать реактовский рендер?
Roman Pominov
@rpominov
Jan 18 2016 14:42
@prog-man еще можно извратиться и рендерить на сервере через php, а потом тоже самое рендерить на клиенте с помощью React :)
Ruslan Abdullaev
@rajdee
Jan 18 2016 14:42
@blia видимо в нежелании переписывать рендер
Roman Pominov
@rpominov
Jan 18 2016 14:43
(это плохая идея, но в каком-то ограниченном виде может работать)
prog-man
@prog-man
Jan 18 2016 14:43
@blia @rajdee В нежелании, потому что приложение очень большое и хотелось бы изменить клиентскую часть jQuery на ReactJS/
Kirill Yakovenko
@blia
Jan 18 2016 14:43
я не про переписывание. Просто из пхп стучать на нодовский порт передавать стейт - получать html
Terry Sahaidak
@terrysahaidak
Jan 18 2016 14:44

ну та штука, що я кинув вище, чисто теоретично має спрацювати добре

принаймні така ж штука в Рельсі працює прекрасно, навіть дружить із RR

Roman Pominov
@rpominov
Jan 18 2016 14:45

Просто из пхп стучать на нодовский порт передавать стейт - получать html

или из ноды стучать в php

Kirill Yakovenko
@blia
Jan 18 2016 14:46
мне кажется ее подключить сложнее. Поднятия ноды с одним листнером и одной функцией :)
@rpominov за стейтом? Тоже вариант
такой себе прокси
prog-man
@prog-man
Jan 18 2016 14:46
@blia @terrysahaida @rpominov Вобщем думаю есть варианты, мне просто нужно видимо хорошо разобраться с ReactJs и другими библиотеками вокруг него.
Roman Pominov
@rpominov
Jan 18 2016 14:48
да, по сути просто прокси. у нас с django так
Terry Sahaidak
@terrysahaidak
Jan 18 2016 14:49
якщо у тебе симфоні, але певно можна будь-де таку штуку запиляти
prog-man
@prog-man
Jan 18 2016 14:51
ок, спасибо, буду вобщем разбираться
Vladimir Matsola
@vomchik
Jan 18 2016 15:12
Ребята, а как мне работать с tree в immutable? как добавлять новые записи ?
Vladimir Matsola
@vomchik
Jan 18 2016 15:23
кажеться оно. но как мне добавлять новые записи в глубь ?
не доганяю
Illia Seheda
@ALF-er
Jan 18 2016 15:24
эм... вот этим методом
Vladimir Matsola
@vomchik
Jan 18 2016 15:25
))) ну вот как мне добавить новую запись в children который находится где-то в глубине
как к нему достучаться?
tree.setIn(['cookie', 'children', 'children'], 1) ?
Illia Seheda
@ALF-er
Jan 18 2016 15:28
так, только у тебя там лист cookie, children, 0, children
Vladimir Matsola
@vomchik
Jan 18 2016 15:30
а
теперь ясно
а не подскажете как это все связать с view
как это передавать в react?
у меня есть такой интерфейс
и вот я не пойму как мне правильно добавлять записи в дерево
Illia Seheda
@ALF-er
Jan 18 2016 15:33
также как ты бы это делал будь это просто объекты и массивы. Только вместо obj.prop юзать obj.get("prop")
Vladimir Matsola
@vomchik
Jan 18 2016 15:35
а immutable строит какой-то уникальный индефикатор записи ?
id или hash
что бы можно было как-то все связать
Illia Seheda
@ALF-er
Jan 18 2016 15:39
всё связать?
Внутренне строит, но там по теории графов всё построено. Доступа к внутреннему id нет
https://www.youtube.com/watch?v=I7IdS-PbEgI автор отлично рассказывает как устроен иммьютабл
Vladimir Matsola
@vomchik
Jan 18 2016 15:42
как мне узнавать куда нужно добавить новую запись?
по какому пути
там юзер может drag&drop перетащить кнопку в любую область
и собствено нужно после этого нужно добавить новую запись
Illia Seheda
@ALF-er
Jan 18 2016 15:43
а, ну ты как-то на сервер собираешься эту информацию слать?
Vladimir Matsola
@vomchik
Jan 18 2016 15:43
да
Illia Seheda
@ALF-er
Jan 18 2016 15:44
тебе нужны id у каждого эллемента
Vladimir Matsola
@vomchik
Jan 18 2016 15:45
ну id это будут у записи у обекта который находиться у сущности cookie
не понимаю как связать tree и view
отрендерить это понятно
но как мне вставлять записи в правильное место
мне же нужен какой-то индефикатор
Illia Seheda
@ALF-er
Jan 18 2016 15:47
также как бы ты это делал будь у тебя обычные объекты и массивы
да тебе нужен идентификатор
Vladimir Matsola
@vomchik
Jan 18 2016 15:51
я просто думал что immutable генерирует id и сними можно будет работать
но впринципе можно и свои сгенерировать и добавить в колекцию
krasevych
@krasevych
Jan 18 2016 19:35
@2j2e @terrysahaidak Дякую!
Alexey Raspopov
@alexeyraspopov
Jan 18 2016 20:35
question
Ни у кого не было проблем с react-router который не хочет работать с HMR?
(react-transform-hmr)
Kirill Yakovenko
@blia
Jan 18 2016 20:43
у меня он и так не хочет работать )
Alexey Raspopov
@alexeyraspopov
Jan 18 2016 20:43
это просто какой-то пиздец
Alexey Raspopov
@alexeyraspopov
Jan 18 2016 20:53
то есть все комьюнити React юзает или react-router или HMR, но никогда вместе?
Alexey Raspopov
@alexeyraspopov
Jan 18 2016 20:58
ага, удалось успешно обмануть warning
Illia Seheda
@ALF-er
Jan 18 2016 21:23
чо, какой варнинг? Всё пашет
Ruslan Abdullaev
@rajdee
Jan 18 2016 21:25
кроме react-router не стоит что-то другое смотреть, director или еще что-то?
Kirill Yakovenko
@blia
Jan 18 2016 21:26
стоит
Ruslan Abdullaev
@rajdee
Jan 18 2016 21:26
redux-simple-router? =)
Kirill Yakovenko
@blia
Jan 18 2016 21:26
хотя у меня рауты - просто экшены
и я редукс не юзаю
Illia Seheda
@ALF-er
Jan 18 2016 21:27
всё стоит смотреть
Kirill Yakovenko
@blia
Jan 18 2016 21:27
вот да
недавно выкладвыли симпатичный раутер.
даже кого-то из местных
вроде
Illia Seheda
@ALF-er
Jan 18 2016 21:27
но из тех что на слуху: реакт-роутер (если редакс, то + редакс-симпл-роутер), директор и роутер5
Kirill Yakovenko
@blia
Jan 18 2016 21:27
а то в скайпе
Illia Seheda
@ALF-er
Jan 18 2016 21:28
а, у Кости (из криасофт который) есть ещё свой и конечно у Славы есть классный но он его не поддерживает =)
Ruslan Abdullaev
@rajdee
Jan 18 2016 21:28
@blia поделись с общественностью
Roman Pominov
@rpominov
Jan 18 2016 21:32
а кто-нибудь видел <Link> компонент независимый от библиотеки для роутинга?
который можно было бы использовать с любой библиотекой
(потенциально)
Illia Seheda
@ALF-er
Jan 18 2016 21:33
эммм... а зачем?
в смысле, что он должен делать?
Roman Pominov
@rpominov
Jan 18 2016 21:34
ну вот есть router5, а <Link> у него нет, например
должен по клику делать переход используя API библиотеки для роутинга
еще хорошо если будет уметь active статус отображать
и именнованные роуты поддерживать
я это как-то так представляю <LinkProvider api={api}>...<Link to="foo" params={{id:1}}>go</link>...</LinkProvider>
Illia Seheda
@ALF-er
Jan 18 2016 21:39
хз... имхо, это завязано на реализацию конкретного роутера. Если функционал необходимый для этого унифицировать, то все роутеры будут уж очень похожи
Kirill Yakovenko
@blia
Jan 18 2016 21:39
а кто-то видел вообще для реакта универсальные компоненты? Вроде в этом и суть компонентов.
Roman Pominov
@rpominov
Jan 18 2016 21:39
api — какое-то унифицированное API в которое можно завернуть любую библиотеку
Illia Seheda
@ALF-er
Jan 18 2016 21:39
унифицированное апи =)
Roman Pominov
@rpominov
Jan 18 2016 21:40
:)
Kirill Yakovenko
@blia
Jan 18 2016 21:40
ну я поддерживаю @rpominov чо. Это вполне жизненно.
Illia Seheda
@ALF-er
Jan 18 2016 21:41
Пилите
Kirill Yakovenko
@blia
Jan 18 2016 21:41
отож
Roman Pominov
@rpominov
Jan 18 2016 21:41
в комплекте может идти api, которое просто линки рендерит (для сервер-рендера)
я вот и спрашиваю может кто видел, прежде чем пилить :)
Kirill Yakovenko
@blia
Jan 18 2016 21:42
да, на основе раутов. И подменяет для пушстейта
пилите, Шура, пилите.
с меня ишью там и пэары :)
ну я такой для себя и сделал. Но не покажу.
Roman Pominov
@rpominov
Jan 18 2016 21:43
надо подумать, почти только что идея пришла
Ruslan Abdullaev
@rajdee
Jan 18 2016 21:43
обманываешь поди
Kirill Yakovenko
@blia
Jan 18 2016 21:43
а то
Roman Pominov
@rpominov
Jan 18 2016 21:43
точнее давно в голове крутилась, но только сейчас сформировалась