
Like
12.04.2018
12:45:55

Bohdan
12.04.2018
12:46:04
императивный слой, все дела
кто-то должен координировать происходящее

Sergey
12.04.2018
12:46:28
послал и забыл

Google

Sergey
12.04.2018
12:46:40
это ж событие а не команды какие-нибудь)

Bohdan
12.04.2018
12:47:29

Like
12.04.2018
12:47:30
Я делаю события только для штук которые попадут в очередь (не всегда)
Для остального я делаю сервисы и вызываю в нужных местах, почему бы и нет

Art
12.04.2018
12:47:31
я вот не понимаю все это. Если все эти фишки использовать по полной еще хуже можно наворотить

Bohdan
12.04.2018
12:48:20

Like
12.04.2018
12:49:05
То что ты вынесешь код с одного файла в другой ничем особо не поможет
Объясни зачем ты хочешь это сделать, возможно, мы просто не понимаем :)

Art
12.04.2018
12:50:19
Тоже мысль пришла что думаем о разных задачах и отвечаем)

Like
12.04.2018
12:52:11

Bohdan
12.04.2018
12:52:32
тут странное...
ну во-первых имхо спутаны понятия команды и события

Google

Bohdan
12.04.2018
12:52:55
хотя...
да нет, не спутаны, тут четко все
меня смущает разделение controller и view в этой ситуации
т.к. это явно не mvc и даже не mvp

Like
12.04.2018
12:55:00
Меня правда смущает то что модель потом в события кидает

Bohdan
12.04.2018
12:56:20
просто контроллер потом дергает модель, а ивент от модели ВНЕЗАПНО летит во view

Like
12.04.2018
12:56:42
А, он во вьюху полетел, не доглядел.

Bohdan
12.04.2018
12:56:44
это вроде бы частично mvc-like
типа вью реагирует на событие модели
но блин, выборка - это не событие
ну и обратная связь от вью идет через контроллер...

Like
12.04.2018
12:57:19
Если убрать контроллер и сделать привязку вьюшки на модель - все будет хорошо

Bohdan
12.04.2018
12:57:20
какая-то смесь mvc и mvp имхо

Like
12.04.2018
12:58:45
какая-то прослойка между роутером и моделью должна быть
Ну, я когда писал на Qt, все что у меня было - view (QML) + model (прослойки я сам делал, но они не нужны были по факту)
Там автоматическая подписка на изменение свойств модели + можно вручную все это делать (уведомить модель например)
Я не знаю применимо ли это к джсу (так как не юзаю его), но на пыху точно не прикрутить

Art
12.04.2018
13:00:29
меня смущает разделение controller и view в этой ситуации
тут js тут свои порядки). Можно было бы в контроллере получить данные из модели и передать в представление, но а как быть с ассинхронностью? Если модель запросит данные по аяксу? Когда данные придут пуляется событие на которое подписана представление. Ну как-то так)

Like
12.04.2018
13:00:31
@artnv ты из статьи какой-то взял это?

Art
12.04.2018
13:01:23

Like
12.04.2018
13:01:27
Если там не валидные данные или сервер умер?

Google

Bohdan
12.04.2018
13:01:36

Like
12.04.2018
13:01:54

Art
12.04.2018
13:02:00
я планирую в отдельный пустой проект вынести все
чтобы юзать можно было

Bohdan
12.04.2018
13:02:25
не знаю, зачем такое не вью, если есть vuex ?
аналогично и реакт

Like
12.04.2018
13:02:34

Art
12.04.2018
13:02:37
не, роутер от бекбона и события. Но архитектура позваляет их не использовать а исаользовать от других библиотек
я тут проконсультировался в соседнем чате, там вуе тоже можно использовать короче

Bohdan
12.04.2018
13:03:09

Like
12.04.2018
13:03:23

Bohdan
12.04.2018
13:03:34

Like
12.04.2018
13:03:57
мм?
Там теперь есть вьюшка которую ты собираешь из компонентов
А не компонент - отображение

Art
12.04.2018
13:04:12

Bohdan
12.04.2018
13:04:19

Like
12.04.2018
13:05:48
https://github.com/vuejs/vue-hackernews-2.0/tree/master/src

Bohdan
12.04.2018
13:06:25
или App.vue?

Google

Like
12.04.2018
13:06:34
Да, Item
Я ставил полгода назад - были только компоненты ?

Bohdan
12.04.2018
13:06:55
дык это тоже компонент
и я на вью уже с полгода точно пишу понемногу
а то и больше

Like
12.04.2018
13:07:39
Ну, значит они не закидывали это во vue-cli

Bohdan
12.04.2018
13:07:58

Like
12.04.2018
13:08:00
Ибо я поставил позавчера и немного "испугался"


Art
12.04.2018
13:44:41
> Когда данные придут пуляется событие на которое подписана представление
Я не понимаю почему так
Модель ака метод который запрашивает данные допустим о товаре, его описание, отправляет ajax запрос на сервер, как данные приходят срабатывает коллбек по приходу данных, этот же коллбек вызывает событие:
app.eventManager.trigger('Models/product/getData', 'данные');
app - единственное глобальное свойство, которое доступно во всех модулях.
1-ый аргумент адрес где оно произошло, чтобы легче искать было если что, можно и краткой записать event_1 но так придется по всем файлам лазить искать откуда оно сработало. Директория Models, product - название модуля, getData - метод модуля
2-ой аргумент данные из ajax запроса.
Теперь app.eventManager.trigger будет искать и запускать все методы, с именем события с которым совпадает 'Models/product/getData'.
И наше представление подписано на это событие.
app.eventManager.on('Models/product/getData', showData);
теперь запустится метод showData который получит данные из передаваемых аргументов и отобразит на странице инфу.
модели и представления хранятся в разных директориях и друг о друге ничего не знают.
Они только реагируют на события и так же отвечают.
Гугли короче паттерн наблюдатель и pub/sub
вот от бекбона, просто посмотреть что это http://backbonejs.ru/#Events
все, пойду на велике катну пока светло)


Bohdan
12.04.2018
13:49:32
расслабиться :D

Like
12.04.2018
13:49:48
Мне лень эту простыню читать :(

Bohdan
12.04.2018
13:52:06
я не понимаю одного: зачем в 2к18 (тролльфейс.жпг) писать модели на фронте, если есть fluxоподобные штуки?

Arky
12.04.2018
14:09:29


Art
12.04.2018
14:13:09
ну это мой велосипед потому-что)
А так посмотри тот проект. Код разделен. Есть контроллеры для сайта, для админки, так же можно задать директории для моделей и для представлений,
для виджетов и компонентов.
Короче можно приложение расширять вдоль и поперек при этом сохранив быстрый доступ к коду. Модули друг о друге ничего не знают, если есть зависимости то они передаютя в DI контейнере и того получается слабосвязанный код. Модули содержат только свои методы. Например корзина только методы корзины, отсюда и единственная ответственность.
В ручную подключать файлы не нужно, есть пространства имен и все подключится туда куда нужно а gulp все сам соберет в один файл.
Так же можно подключить Vue. Во время инициализации Vue будет в памяти. А события будут вызывать хендлеры которые будут получать данные, а Vue просто отображать на странице. Кстати Vue тоже ничего не будет знать об архитекторуре, он будет только в рамках view просто получать данные и отображать. А в момент вызова хендлера можно так же биндить ко всяким чекбоксам динамически
В общем мне нравится)
Вот схема
https://raw.githubusercontent.com/artnv/ecommerce-demo/master/screenshots/app_architecture.png


code4aman
12.04.2018
14:13:39

Bohdan
12.04.2018
14:22:46

Google

Bohdan
12.04.2018
14:24:01
архитектура в общем и целом имеет право на жизнь
когда писал на первом ангуларе - коллега (мой ментор + лид) строил что-то подобное
без ивентов, но с моделями для сущностей
тут хорошо типизация легла бы

Art
12.04.2018
14:28:46
с событиями очень нравится самому), как-то что-то делал, перекладывал файлы, не помню и все не рушится от отстутсвия какого-то модуля. Можно тупо часть функционала убрать тупо удалением или перемещением но все остально будет так же работать, потому-что все модули не знают ничего друг о друге.
И те же ассинхронные запросы от ajax
типизация как в php? на интерфейсах и возвращаемый тип function abc() : className?

Bohdan
12.04.2018
14:29:48
flow/typescript имею ввиду)

Maksim
12.04.2018
14:30:46

Bohdan
12.04.2018
14:31:23
amphp "более лучше")
ты знаешь мое мнение) хоть у меня и лежало немного инфы по асинк пхп в трелло, но читать я ее, конечно, не буду

Like
12.04.2018
14:31:23

Maksim
12.04.2018
14:32:07

Bohdan
12.04.2018
14:32:59
почти, но зачем?)
интеграция, не спорю

Like
12.04.2018
14:33:22
Абы було

Maksim
12.04.2018
14:33:24

Like
12.04.2018
14:33:32

Sergey
12.04.2018
14:34:19

Maksim
12.04.2018
14:34:30
почти, но зачем?)
а вообще почитать стоит хотя бы для общего развития) оно есть и +/- работает)

Bohdan
12.04.2018
14:36:17

Maksim
12.04.2018
14:36:42

Bohdan
12.04.2018
14:37:39

Maksim
12.04.2018
14:38:18
у нас вон есть и голанг, и ява, и асинх пхп рядышком)