
Alex
03.02.2017
08:09:07
Vuex будет лишним грузом если только кусок где-то на вью впиливаешь
ну опять же) кому-то вебпак не в радость)
когда уже что-то продвинутое начинаешь делать и то и другое может понадобиться

Сашка
03.02.2017
08:09:41
Vue будет лишним грузом, если только кусок где-то на нем впиливаешь :D

Google

Alex
03.02.2017
08:09:59
ну да, можно вместо него лапшички на jq написать

Сашка
03.02.2017
08:10:24
Если кусок - на ванили даже проще

Alex
03.02.2017
08:10:44
тут скорее смысл что постепенно осваиваться и усложнять приложение когда это потребуется. До поры до времени состояние прекрасно можно в объекте хранить каком-то общем
А когда дорастёт, всё это просто заменяется на vuex

Сашка
03.02.2017
08:11:31
Лан, уговорил)

Illya
03.02.2017
08:24:00

Stanislav
03.02.2017
08:55:08
https://medium.com/@arturkornakov/5-%D0%B8%D0%B4%D0%B5%D0%B9-vue-js-%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B5-%D0%B2%D1%8B-%D0%BF%D0%BE%D0%BB%D1%8E%D0%B1%D0%B8%D1%82%D0%B5-%D0%B4%D0%B0%D0%B6%D0%B5-%D0%B5%D1%81%D0%BB%D0%B8-react-%D0%B2%D0%B0%D1%81-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D1%83%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D1%82-33bcbeba2916#.rrajs472q

Михаил
03.02.2017
08:56:08
@xanf_ua а когда будет запись с субботней лекции ? :)

Illya
03.02.2017
08:58:14
Сегодня сшить надо
Работы много

Roman
03.02.2017
09:13:17
да кстати когда выложите записи стримов на ютуб?

Иван
03.02.2017
09:20:08
https://blog.jetbrains.com/webstorm/2017/02/webstorm-2017-1-eap-171-2822/

Google

Illya
03.02.2017
09:27:07

Иван
03.02.2017
09:33:16
vuex, redux - никогда не понимаю нахер такое ваще может понадобиться, проекты у меня дохрена сложные, и никаких проблем с хранением состояния не испытываю, тем более с моим подходом вообще vuex и редуксы всякие не вяжутся, насколько я понимаю. Иногда думаю, толи я тупой, то-ли наоборот, раз все фапают на эту херню! Может быть есть у вас на примете реальный какой-нибудь пример (не высосаный из пальца счётчик) а реальная ситуация, где бы я прочувствовал всю прелесть этого дела!?

Arthur ?
03.02.2017
09:35:50
как ты реализовываешь общение между смежными(не иеархическими) компонентами?

Семен
03.02.2017
09:36:19
(без костылей)

Arthur ?
03.02.2017
09:38:10
это удобно(vuex) например если у тебя есть настройки пользователя, и ты хочешь чтобы при их изменении динамически менялись компоненты в разных частях SPA
допустим что выбранная юзером опция должна повлиять на >10 компонентов разного уровня вложенности. Передавать новую инфу в каждый из компонентов явно - ну такое себе решение
с радостью послушаю, какие есть архитектурные подходы решения подобного


Timur
03.02.2017
09:40:26
vuex, redux - никогда не понимаю нахер такое ваще может понадобиться, проекты у меня дохрена сложные, и никаких проблем с хранением состояния не испытываю, тем более с моим подходом вообще vuex и редуксы всякие не вяжутся, насколько я понимаю. Иногда думаю, толи я тупой, то-ли наоборот, раз все фапают на эту херню! Может быть есть у вас на примете реальный какой-нибудь пример (не высосаный из пальца счётчик) а реальная ситуация, где бы я прочувствовал всю прелесть этого дела!?
Лучше ты покажи свой код, а мы тебе и скажем, где у тебя криво и куда можно наложить Vuex хорошо.

MVP
03.02.2017
09:51:26

Иван
03.02.2017
09:51:38
код у меня секретный )
у меня нет говнокода )

Illya
03.02.2017
09:52:05
lol
вот хороший пример
из проекта где мы реально работаем
https://goshakkk.name/lazy-auth-redux-saga-flow/
без редакса и саг проклянешь это делать

Иван
03.02.2017
09:54:11
Хорошо, сейчас обдумаю, почитаю

Illya
03.02.2017
09:54:23
или вот простой сценарий
есть таблица игроков, которая содержит очки
Таблица может обновляться рестом (глобально) и по вебсокетам (инкрементально)

Google

Illya
03.02.2017
09:54:55
Таблица нужна в нескольких местах приложения
Ее удобно хранить в application state
более того - ты сможешь отслеживать ее обновления (иначе как ты узнаешь что таблица обновилась)

Andrey
03.02.2017
09:58:04
Был один товарищ очень против vuex, потому что прочел про flux и решил что он нужен только Фейсбуку. Но релаксации и cuex совсем не одно и тоже. В Vuex нет столько боелепартного кода и проблем, как в редакс. Когда товарищ попробовал Vuex - он осознал что был не прав. Ведь инстумент нужно самому попробовать что бы решить как он

Illya
03.02.2017
09:58:27
такое. vuex / redux отличаются только "оберточным" кодом

Иван
03.02.2017
10:01:46
А почему бы не так:
// table.js:
export default [
{player: 1, points: 12},
{player: 2, points: 15}
]
// component1.vue <script>:
import table from './table'
export default: {
name: 'component1',
data() {
return {table}
}
}
// component2.vue <script>:
import table from './table'
export default: {
name: 'component2',
data() {
return {table}
}
,
methods: {
addPoints(player, count) {
table.find(item => item.player === player).points += count // Ну для простоты так написал
}
}
}

Illya
03.02.2017
10:03:58
Вопрос: где вебсокеты (подсказка - они не могут быть в компонентах, т.к. компонент это вью слой). Второй вопрос - как отслеживать изменения в таблице (в вашем случае изменения в table.js не будут вызывать перерисовки - т.к. table.js очевидно не реактивна)

Иван
03.02.2017
10:04:39
очевидно, что тейбл реактивна, потому, что как только она поподёт в дату одного из компонентов она станет реактивной

Illya
03.02.2017
10:04:49
А еще возникают нюансы правильной реализации: к примеру в реальном приложении вначале ты подключаешься к вебсокету и буферизируешь обновления, потом грузишь рест, и при успешной загрузке реста накатываешь обновления (это единственный способ НЕ ТЕРЯТЬ данные)
нет не станет :)
вернее будут неприятные нюансы, связанные с тем. что к примеру добавлять новых игроков вам прийдется только через Vue.$set

Иван
03.02.2017
10:05:30
ща будем фиддлить

Иван
03.02.2017
10:05:41
Vue.$set не использую почти никогда
и не надо будет, просто пушишь в тейбл, тейбл реактивный

Illya
03.02.2017
10:07:12
это пуш пропатченный :) а не тейбл реактивный. ну да ладно
а вот где разместить к примеру логику с вебсокетами и трекингом загрузки. которую я описал? :)
А еще как вы будете отлаживать кто инициировал изменение в таблице? :)

D
03.02.2017
10:15:27
здра! никто, просто быть вкурсе процессов разработки

Emil
03.02.2017
10:16:35
вечер в хату, разрабы

Иван
03.02.2017
10:22:02
Всё реактивно:
https://jsfiddle.net/n23cLtrd/

Google

Иван
03.02.2017
10:22:47

Illya
03.02.2017
10:23:12
ага, а вот теперь возникает вопрос "начерта". Ну т.е. вы изобретаете велосипед, который надо изучать вам и ваших коллегам
Vuex предлагает СТАНДАРТИЗИРОВАННОЕ решение для таких задач

Admin
ERROR: S client not available

Иван
03.02.2017
10:23:35
что тут изучать то? ))) vuex - вот что придётся изучать

Illya
03.02.2017
10:23:38
естественно можно закодить все самому. но это будет боль

Timur
03.02.2017
10:23:49

Иван
03.02.2017
10:23:50
а что массив объектов javascript изучать?

Timur
03.02.2017
10:23:53
Он прост как топор.

Иван
03.02.2017
10:24:03
А когда она станет классом (возможно с наследованием и т.п.) (аля сервисом) тогда она уже не будет plain объектом, которыми оперируют

Illya
03.02.2017
10:24:07
простейший пример: надо запретить модифицировать таблицу напрямую - только каким-то методом :)

Иван
03.02.2017
10:24:08
vuex и redux
я ответил, смотри выше

Illya
03.02.2017
10:24:49
вы ж понимаете - если вы превратите ее в класс, у которой будет допустим метод возвращающий текущее состояние таблицы - отвалится реактивность

Иван
03.02.2017
10:24:52
да, но вот если переписать всё на vuex, то получится в пятсот раз больше кода, и спрашивается нахера?

Illya
03.02.2017
10:25:12
потому что если вы возвращаете новый инстанс таблицы - то она будет не реактивна
а если возвращаете тот же - я могу его модифицировать напрямую

Иван
03.02.2017
10:25:25

Illya
03.02.2017
10:25:30
см. выше

Иван
03.02.2017
10:25:32
зачем новый инстанс

Google

Illya
03.02.2017
10:25:47
потому что если вы возвращаете тот же инстанс кто мне запретит сделать table[0].score = 80
и я потом фиг найду кто это сделал :)

Иван
03.02.2017
10:26:02
совесть?
=D

Illya
03.02.2017
10:26:27
Вот именно. Вот только такие понятия как совесть плохо применимы в хоть сколько-нибудь больших проектах (даже на 2-3 разработчиков)

Иван
03.02.2017
10:26:39
ну может быть проблема как раз в отсутсвии коллег

Illya
03.02.2017
10:26:43
Там задача сделать максимально изолированный код, чтобы было безопасно
А теперь добавим наворотов: мне нужно каждый раз когда происходит изменение очков отправлять бикон в гуглоаналитику (сторонний сервис)
Вы будете делать это прям в классе таблицы? Это прямое нарушение S из SOLID - принципа одной ответственности. Класс занимается двумя вещами (управляет данными и шлет данные в гуглоаналитику)
Плюс в таком случае у класса появляется внешняя зависимость и его уже дико геморройно тестировать

Andrey
03.02.2017
10:30:28
Да есть же 2 пути со стором из доков ву. Это vuex и инстанс vue. Иван окольными путями использует второй вариант.

Illya
03.02.2017
10:30:43
я все это понимаю
собираюсь сейчас постримить если настроение будет redux-saga + vuex )

Andrey
03.02.2017
10:31:49
А нет других бибилиотек, кроме саги, что бы пользоваться конкаренси?