@scala_ru

Страница 18 из 1499
Aleksey
15.07.2016
11:31:58
/me пожимает плечами

Andrey
15.07.2016
11:33:24
@fomkin , Add todo должно работать сейчас?

Aleksey
15.07.2016
11:33:58
Да. Вниз поскролить надо.

Nikolay
15.07.2016
11:34:20
На прошлой работе примерно так и делали с первым плеем. Шаблоны генерал плеевский генератор и через xmlhttprequest обновляли кусок на клиенте

Google
Nikolay
15.07.2016
11:35:02
Не писать JavaScript можно и с scalajs сейчас

Andrey
15.07.2016
11:35:06
@fomkin суперкул

Nikolay
15.07.2016
11:35:40
А то что клиент лёгкий выходит - это хорошо

Aleksey
15.07.2016
11:35:45
scalajs это да. но это все равно js. это отдельное приложение. между сервером и клиентом надо выстраивать диалог.

здесь ты тудушку принял и сразу же ее в базу записал.

Vadim
15.07.2016
11:36:29
я хз, в чем крутость - поменяли аякс запрос рендеренного html на запрос через ws

Aleksey
15.07.2016
11:36:40
или из очереди новое сообщение принял и сразу же его клиенту.

Diemust
15.07.2016
11:36:55
ну перед записью в базу все ранво клиент отправил на сервер что-то

Viacheslav
15.07.2016
11:36:58
мне кажется джаваскрипт штуки лучше писать на джаваскрипт, не? Есть ощущение что идея оборачивать жс во что бы то ни было не жизнеспособна, сколько бы ни пробовали.

Aleksey
15.07.2016
11:37:27
Это не js. Вообще ничего на клиенте не делается.

При этом браузер получает не отрепдерений шаблон, а вызовы над DOM.

Viacheslav
15.07.2016
11:38:51
на клиенте чистый хтмл, как без жс то?

Aleksey
15.07.2016
11:38:53
То есть когда ты кликаешь на чекбокс, тебе приходит, мол у такой-то ноды checked=true, а здесь <span> на <strike> замени.

Google
Nikolay
15.07.2016
11:39:03
Но это для несложных приложений, где не ожидается больших переходов в UI, и нет ожиданий что приложение может потерять сеть. А то ведь получается что на каждое действие обращение к серверу чтобы получить обновленный интерфейс

Aleksey
15.07.2016
11:39:21
на клиенте чистый хтмл, как без жс то?
Это машинерия. Он один раз написан и его трогать не надо.

Viacheslav
15.07.2016
11:40:40
логика чего?

Aleksey
15.07.2016
11:40:58
@rockjam если сеть теряется то да, все плохо. но большие изменения UI - сколько угодно.

Nikolay
15.07.2016
11:41:03
Клиентская логика

Aleksey
15.07.2016
11:42:23
@rockjam но если сеть теряется, то это в любом случае все плохо, если приложение не сделано в offline first идеологии.

Diemust
15.07.2016
11:43:22
mvvm с js как-то проще покатит, нет?

Aleksey
15.07.2016
11:45:48
mvvm с js как-то проще покатит, нет?
На сервак все равно надо ходить, REST там делать или еще что. А тут событие принял, в одной веточке пошел морду обновлять, в другой в базу писать.

Потом из очереди получил событие. Пошел сразу на клиенте обновил.

10 строчками кода можно сделать то, для чего сейчас городят городухи из 1000 строк.

Vasily
15.07.2016
12:04:55
Мдя...

На мой вкус ахеренно

Единственное, что надо не свалиться в Listener Hell

А так интересно

Aleksey
15.07.2016
12:07:26
Единственное, что надо не свалиться в Listener Hell
А что имеется в виду? Открытые соединения?

Vasily
15.07.2016
12:08:32
Весь UI построен пока на стандартных событиях

listen('click'); listen('mousedown'); listen('mouseup');

Ну вот когда компонет будет много их разруливать станет головозгно

*головомозгдно

Google
Aleksey
15.07.2016
12:10:36
А, это. Они слушаются на корне. То есть добавляются один раз для все приложения.

Vasily
15.07.2016
12:10:53
это понятно

Просто типов событий будет много и вообще модель листнеров проблематична в поддержке на больших приложения

*приложениях

И кстати не оч понятно как делать реюз компонет

Aleksey
15.07.2016
12:14:09
В функцию выносить.

Vasily
15.07.2016
12:15:23
Но тогда у тебя нет контекста для распознования одних и техже событий из разных мест

Хотя может здесь получится ок так как все события получаются последовательно

Aleksey
15.07.2016
12:15:57
А функции компоновать во что-то типа ML-овских функторов. Параметризуемые модули.

В нашем случае видимо классы.

Vasily
15.07.2016
12:16:15
Надо пробовать

Aleksey
15.07.2016
12:17:59
Но тогда у тебя нет контекста для распознования одних и техже событий из разных мест
"Навешивание" событий идемпотентное. Это просто узел в виртуальном DOM. Если узел присутствует, то реакция на событие есть, если нет, то и реакции нет. Но вообще дизайн событий тебует переработки. Мне не очень нравится как сейчас плучилось.

Vasily
15.07.2016
12:19:55
Тем не менее Посздравляю получилась оригинальная идея!

Aleksey
15.07.2016
12:20:46
Ура!

Vasily
15.07.2016
12:24:21
Я честно говоря не знаю как на JS но в толстых клиентах это решалось Event Bus

Aleksey
15.07.2016
12:34:44
Тут по сути все большой EventBus. Когда происходит событие мы ничего не может сделать с DOM. Он иммутабельный. Но мы можем сгенерить экшн. Тогда будет вызвана функция, которая смержит текущий стейт с экшном, после чего это стет будет отдан на рендеринг, сгенерится новый иммутабельный DOM, сделается дифф со старым, список изменений улетит на клиент.

Так сейчас на фронте модно делать. Очень по-хипстерси.

Vasily
15.07.2016
12:37:20
Это я уловил еще в первый раз когда ты рассказывал;)

Aleksey
15.07.2016
12:41:25
В общем еще пара тройка летних выходных и можно будет выкладывать на гитхабчик, что бы все могли попробовать :)

Vasily
15.07.2016
12:41:59
Давай Жги ;)

Google
Vyatcheslav
15.07.2016
13:13:22
Леша молодец :) ребят, тема на самом деле офигенная. У такого подхода очень крутые плюшки из коробки: офигенный дебагинг, сбор статистики (куда юзеры кликают, в какой последовательности). А еще можно очень легко UI-тесты писать. Представьте, есть требование: после нажатия на "Купить", должна появиться корзина. Так вот эти тесты можно писать на сервере (без селениума). Понятно, что селениумные тесты все равно нужны, но они выполняются на порядок дольше, пирамида Кона, туды-сюды

Vadim
15.07.2016
13:16:16
есть четкое ощущение, что те кто этим восторгается просто никогда не писал подобный ui)

Vyatcheslav
15.07.2016
13:17:22
писал, и ui тесты на моке с кармой писал :)

Vasily
15.07.2016
13:18:20
Строго говоря "подобного" нет

Vyatcheslav
15.07.2016
13:19:07
ну да, подобного не видел. Но как бывший фронтендер идею могу оценить

Vadim
15.07.2016
13:19:18
да вы издеваетесь чтоли, рендерим хтмл на бекенде - вот же новизна, ниразу не видел)

Vasily
15.07.2016
13:20:06
Неее вот рендерить на бекенде, этого полно

Vadim
15.07.2016
13:20:35
ну а тут разве не это?)

Admin
ERROR: S client not available

Vyatcheslav
15.07.2016
13:20:43
ты ничего не понял :(

Vadim
15.07.2016
13:20:48
рендер всего + частичный рендеринг)

Andrey
15.07.2016
13:21:41
тут не рендерится ui на бэке

Aleksey
15.07.2016
13:22:14
Дьявол в деталях. Статическая страница против динамической, pull против push.

тут не рендерится ui на бэке
Да, как такового "рендеринга" на сервере не происходит. Сервер удаленно управляет DOM на стороне клиента.

Vadim
15.07.2016
13:23:58
ну вот по вебсокету то что летит - даже если это не зарендеренный ui, а команды на манипуляцию c ui - я особой разницы не вижу, кроме что потом опупеешь это писать)

Aleksey
15.07.2016
13:24:32
Что писать?

Vadim
15.07.2016
13:25:22
ну а что можно с деревом выполнить?

Alex
15.07.2016
13:25:37
вроде у N2O эрланговского такая же идея

пушать с сервера куски по ws

Igor
15.07.2016
13:26:12
vaadin то же делает

Google
Aleksey
15.07.2016
13:26:19
вроде у N2O эрланговского такая же идея
Да. Вдохновляюсь N2O и React/Redux.

vaadin то же делает
Не совсем. Ваадин это вполне себе клиент-сайд компоненты на GWT, которые управляются с сервера через RPC. Каждый компонент это вполне себе такой серьезный кусок джаваскрипта и некий сетевой интерфейс к нему. Хотя возможно за 5 лет там все поменялось, но вроде бы было именно так.

Ну и самое главное, что ваадин это ООП в плохом смысле слова. Императивная лапша и тысячи строк бойлерплейта. Опять же по инфе 5-летней давности.

Vadim
15.07.2016
13:37:49
да любая поделка с созданная с целью "не писать на js" придет в ужасное состояние при попытке покрыть все кейсы

Aleksey
15.07.2016
13:39:46
да любая поделка с созданная с целью "не писать на js" придет в ужасное состояние при попытке покрыть все кейсы
Тут даже не "не писать на жс", а "не писать фронтэнд как отдельную программу". Для "не писать на жс" есть масса замечательных вещей. Тот же Scala.js, который отлично работает и покрывает все что может быть в JS.

да любая поделка с созданная с целью "не писать на js" придет в ужасное состояние при попытке покрыть все кейсы
Но возможность грузить джаваскрит на страничку и взаимодейтствовать с ним я конечно сделаю. Всякие там хуки на добаление удаление. Это все нужно и полезно.

Vadim
15.07.2016
13:44:07
если не писать фронтенд как отдельную программу, то с ростом размера проекта этот путь гораздо быстрее приведет к суицидальным мыслям

Aleksey
15.07.2016
13:44:25
Почему?

Vadim
15.07.2016
13:45:19
больше связности и меньше управлямости

Igor
15.07.2016
13:45:32
Кстати, на счет scala.js есть интересный вопрос: например я хочу обратиться к свойству объекта document, которого нет в интерфейсе scala.js. Как мне это правильно сделать?

Vadim
15.07.2016
13:45:40
а потом начнется жижа размазнная между сервером и клиентом

ну если только это не идеальный случай)

Luger
15.07.2016
13:54:05
@fomkin , смотрю как завараженный на этот код. немного не понял, вот допустим такой случай : есть несколько элементов в DOM которые содержат одну и ту же инфу. с помощью ажакс я обычно б такое обновил сразу в одном месте. немного не могу представить, как здесь такое сделать?

Aleksey
15.07.2016
13:57:27
@fomkin , смотрю как завараженный на этот код. немного не понял, вот допустим такой случай : есть несколько элементов в DOM которые содержат одну и ту же инфу. с помощью ажакс я обычно б такое обновил сразу в одном месте. немного не могу представить, как здесь такое сделать?
> с помощью ажакс я обычно б такое обновил сразу в одном месте Ну имеется в виду, то что мы бы джаваскриптом отправили запрос на сервер, получили бы данные, а потом пошил бы и обновли дом тех местах, где нужно, так?

Luger
15.07.2016
13:57:39
да, так

все верно

Aleksey
15.07.2016
13:57:59
Окей, сейчас расскажу.

Diemust
15.07.2016
13:58:26
можно сделать прослойки, одна дает данные, другая на них биндится и отдает что и как нужно на фронт, например =)

Страница 18 из 1499