Fork me on GitHub
#clojure-russia
<
2017-04-07
>
just.sultanov03:04:34

Всем привет! Начал изучать clojure(script) на небольшом пет проектике. Решил заюзать вместо бутстрапа семантик -> вот нашел туториал и либу на cljsjs. Подскажите, кто более опытный в clojurescript, как Вам данный подход? https://www.opensourcery.co.za/2017/02/12/using-semantic-ui-react-with-re-frame/

kishanov03:04:12

мы используем re-frame и semantic но без react биндингов. У меня сложилось ощущение, что react-биндинги более баженные и разрабатываются с задержкой, в большинстве случаев нас устраивает верстка стандартными классами + выставление behavior’ов и setting’ов через react lifecycle method’ы

kishanov03:04:11

самые занимательные приключения в semantic’е c multiple search selection dropdown

mike_ananev05:04:01

@nicola Николай, а если есть rum, зачем более тяжелый re-frame?

kishanov06:04:50

имхо rum напрямую с re-frame сравнить - как теплое с мягким. более корректно сравнивать связку reagent+re-frame и rum+scrum

rmuslimov06:04:09

@kishanov ху из скрум?

rmuslimov06:04:34

> имхо rum напрямую с re-frame сравнить - как теплое с мягким. более корректно сравнивать связку reagent+re-frame и rum+scrum Хорошо, а можешь пожта дать такое сравнение?

roman01la08:04:54

scrum сырой, я бы не советовал за него браться

savelichalex09:04:54

@U0FR82FU1 а ты хочешь сделать аналог re-frame?

roman01la09:04:05

@U0L7JD40P не то чтобы аналог (все подобные решения одинаковы), а просто что-нибудь для rum, чтобы можно было быстро стартовать

savelichalex09:04:50

вот интересно, можно было бы rum с re-frame заюзать как то

roman01la09:04:13

вроде бы ре-фрейм изначально пилили отдельно от всех оберток для реакта, но тк реагент самый популярный, то больше начали пилить под него

kishanov14:04:14

re-frame сильно завязан на reagent’овский atom и макрос reaction, чтобы subscription’ы автоматически пересчитывались

savelichalex14:04:00

мне кажется было бы круто отвязать его от этого 😄

nicola09:04:18

Мне в re-frame декауплинг эффектов и коэфектов понравился

razum2um10:04:06

Я выполз из криозаморозки, ничего не помню за последний год, расскажите что за последний год изменилось из знакового? Последнее что помню - clojure.spec / om-next-alpha

misha10:04:59

новые ЛистВью в реакт нейтиве opieop

razum2um10:04:59

а что, там чтото не как в ванили с rowHasChanged & dataSource - или эти 2 уже считаются новыми?

razum2um03:04:56

о, спасибо

kishanov14:04:24

@rmuslimov такое стравнение дать не могу - я с rum/scrum не работал. 3й год делаю большое приложение на reagent+re-frame, могу только рассказать почему одним reagent’ом не обойтись и как re-frame помогает

misha14:04:32

как помогает?

kishanov14:04:22

в reagent’е ничто не форсирует как менеджить и шарить state - хошь атомы в внутри компонента на лету создавай (удобно для форм), хошь глобальные в namespace’е делай. Но как только появляются event’ы, котоыре должны каскадно поменять состояние нескольких компонентов (например, данные с сервера приехали) - это надо как-то систематично делать

kishanov14:04:12

re-frame дает 1 глобальный атом для state’а и унифицированный event loop как его обновлять и что перерендеривать. удобный паттерн

misha14:04:33

а что в нем такого, что он на реагент завязан?

kishanov14:04:51

мы год пилили на одном reagent’е и когда кода стало ~20K (примерно 100 экранов) мейнтейнить стало невозможно. re-frame тоже не коненое решение, но по крайней мере можно понять, где что меняется

kishanov14:04:27

re-frame завязан на reagent’овский atom (который считает deref’ы и триггерит перерендеривание) и на макрос reaction который делает subscription’ы

kishanov14:04:13

собсно re-frame’овская “база” - это 1 reagent’овский atom. re-frame’овские subscription’ы - это путь в этой базе (в контексте get-in’а) которые автоматически пересчитываются когда этот кусок atom’а меняется

misha14:04:39

это у вас “мобильное“? или “десктопное“? 1 атом справляется со 100 экранами?

kishanov14:04:15

десктопное энтерпрайзное (мало пользователей, много бизнес логики)

misha14:04:21

кстати -> быстрее, чем get-in

misha14:04:14

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

kishanov14:04:05

😃 у нас минимальное требование к клиента - макбук прошка + локальная сеть для коннекшена 🙂

misha14:04:44

по локальной сети на прошку можно скриншоты экрана с сервера слать kappa

misha14:04:18

а роутинг какой у вас?

kishanov14:04:16

https://youtu.be/Z1PzrC5DmmQ?t=12m - где-то с 12й минуты можно понять масштаб трагедии

kishanov14:04:05

client-side routing - bide. secretary выкинули потому что рауты макросами определять неудобно

kishanov14:04:35

я посылал presentation proposal на clojure/west на тему “экспериенс репорт пиления энтерпрайзного приложения на реагенте и рефрейме“, но они пореджектили

kishanov14:04:09

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

misha15:04:58

хорошего накипело? или желчи?

kishanov15:04:33

накипело не в смысле хорошего или плохого, а в смысле что в интернете дальше todomvc примеров приложений нет, а когда сталкиваешься с реальными проблемами (например, как правильно сделать каскадные вызовы к API в зависимости от значений в response’ах или как сделать формы, в которых выбор значения в одном dropdown’е определяет структуру и значения других компонентов формы) - информации мало

kishanov15:04:27

за 3 года мы фундаментально переписывали все уже 5 раз, потому как приложение чуток подрастает - старая архитектура начинает трещать по швам

misha15:04:27

про формы - реакт обычный troll

nicola16:04:23

@kishanov давай хэнгаут с тобой запишем

nicola16:04:06

Следующий планировали с yogthos - про middleware и у меня там есть, что накинуть - я тут свой гибрид pedestal + onyx написал

kishanov16:04:05

да ну можно, только не думайте, что я что-то знаю - просто у меня есть шишки набитые 🙂

nicola16:04:06

А после него можно с @kishanov