
DimenSi
17.07.2018
13:26:18

Evgeny
17.07.2018
13:26:24
а если у тебя список?

Pavel
17.07.2018
13:26:43

DimenSi
17.07.2018
13:26:52

Google

Pavel
17.07.2018
13:26:52
Как Вью видит изменения

Дмитрий Maestro
17.07.2018
13:27:11
да вот крутой
пытаюсь понять

DimenSi
17.07.2018
13:27:21
https://ru.vuejs.org/v2/guide/reactivity.html#ad
@pnkbizz читай
вникай
умней

Stanislav
17.07.2018
13:27:43
А как же он видит изменения? ))))
Он навешивает на свойства объекта свои геттеры и сеттеры.
Когда дергается сеттер, происходит пересчет зависимостей и вью вызывает рендер.
Это в общем

Pavel
17.07.2018
13:28:03
В силу ограничений современного JavaScript (и отказа от Object.observe), Vue не может отследить добавление или удаление свойства объекта.
Это почему так?

Stanislav
17.07.2018
13:28:09

Pavel
17.07.2018
13:28:17
Потому что ссылка не изменяется

Google

Pavel
17.07.2018
13:28:30
А знаешь что в роадмапе? Proxies

Stanislav
17.07.2018
13:28:39
Это почему так?
Потому что на момент инициализации геттеров/сетеров, поля в объекте нет.
Вешать не на что

Pavel
17.07.2018
13:28:44
И объекты будут меняться

Stanislav
17.07.2018
13:28:48
Причем тут ссылка?

DimenSi
17.07.2018
13:28:59
не знаю, он кажется одно слово запомнил и теперь как попугай

Pavel
17.07.2018
13:29:46

Rafael
17.07.2018
13:30:13

DimenSi
17.07.2018
13:30:37
dirty-checking popugai.

Stanislav
17.07.2018
13:31:07

Rafael
17.07.2018
13:31:15

Pavel
17.07.2018
13:31:57
Итак, попробую доходчиво:
1. Мы объявляем свойства в дате, примитивы и объекты
2. Вью навешивает на них вотчеры
3. При изменении - перерисовывает дом, правильно?

Stanislav
17.07.2018
13:32:10

Pavel
17.07.2018
13:34:39
Когда мы меняем примитивы - меняется ссылка на примитив и Вью сразу же видит изменения.
Когда мы меняем поле у объекта - ссылка остается той же самой, поэтому для изменения объекта мы должны пользоваться кострукцией Vue/set
То же самое с массивами, с той лишь разницей, что Вью подменяет часть методов
Поэтому push и тд работают реактивно

Stanislav
17.07.2018
13:36:19

Pavel
17.07.2018
13:36:21
Сейчас идет работа над внедрением прокси, это даст возможность менять объекты реактивно, но уберет поддержку ие
Да знаю я как все устроено во Вью. Но чтоб геттер сработал - Вью должен знать, что изменения произошли! )))

Rafael
17.07.2018
13:37:34

Google

Rafael
17.07.2018
13:37:44
Давай я задам тебе вопрос, на который ты не знаешь ответ

Pavel
17.07.2018
13:37:45
Ну не все )))

Rafael
17.07.2018
13:38:05
Тогда слушай Стаса - он хуйни не скажет

Pavel
17.07.2018
13:38:12
@Fl0pZz но разве я не верно толкую?

Rafael
17.07.2018
13:38:22

DimenSi
17.07.2018
13:39:28
вью не проверяет ссылки, он реагирует на эвенты которые создают геттеры и сеттеры.

Stanislav
17.07.2018
13:39:30

Pavel
17.07.2018
13:41:41
А эвенты создаются когда? Допустим у нас задан в дате
a: 0, b: {}
Мы в методе меняем a = 1, b.c = 2
для a эвент стрельнет, для b нет, правильно?

DimenSi
17.07.2018
13:42:32

Aleksandr
17.07.2018
13:42:58

Andrey
17.07.2018
13:44:03
Ребят, кто использовал styled components внутри Vue - есть ли смысл или проще пойти через css модули? Так то я в реакте стайлед фан, но тут из-за шаблонизатора оно выглядит слегка избыточно, но душа, так сказать, уже лежит к стайлед

DimenSi
17.07.2018
13:44:28

Stanislav
17.07.2018
13:45:09

Pavel
17.07.2018
13:45:33

Stanislav
17.07.2018
13:45:46

Pavel
17.07.2018
13:45:57
ну а срабатывает-то он почему?

DimenSi
17.07.2018
13:46:06
Из за присвоения

Stanislav
17.07.2018
13:46:07

Pavel
17.07.2018
13:46:23
а почему не срабатывает в первом случае?

Google

Stanislav
17.07.2018
13:46:34

Pavel
17.07.2018
13:46:38
да

DimenSi
17.07.2018
13:46:53

Stanislav
17.07.2018
13:47:00
да
Потому что поля c нету изначально. Вью не навесил на него сеттер

Дмитрий
17.07.2018
13:47:07
День добрый. Как решаете проблему с большим разрешением изображений?
На сервере gzip настраиваете или что-то др используете? Если какие-то конкретные модули для Nuxt?

Andrey
17.07.2018
13:48:50

Pavel
17.07.2018
13:50:01
@c01nd01r
Вот таким образом навешиваются геттеры/сеттеры, так?
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get:function(){
return value;
},
set:function(newValue){
if(value !== newValue){
value = newValue;
tellTheWorldIhaveChanged(); //somebody is watching!
}
}
});

Stanislav
17.07.2018
13:50:19

Admin
ERROR: S client not available

Pavel
17.07.2018
13:50:33
if(value !== newValue)
сравниваем ссылки

Alex
17.07.2018
13:51:01
Привет, как лучше передавать значение из компонента с инпутом в родитель? Эмитеть ивент? Использовать sync? Или как то еще?

Pavel
17.07.2018
13:51:04
https://blog.cloudboost.io/reactivity-in-vue-js-2-vs-vue-js-3-dcdd0728dcdf
отсюда

Rafael
17.07.2018
13:51:42
если бы это были ссылки, то одинаковые литералы строк не были бы равны

Дмитрий
17.07.2018
13:52:12
Кто-то использует image-webpack-loader? Есть ли смысл использовать или с этим справится gzip?

Pavel
17.07.2018
13:53:26

Rafael
17.07.2018
13:53:53
А как?
в случае строк это лексикографическое сравнение, в случае чисел, сравниваются числа по значению

Google

Rafael
17.07.2018
13:53:58
а не по ссылке

Pavel
17.07.2018
13:54:20
Да, совершенно верно. Я не правильно выразился
По ссылке сравниваются объекты

Rafael
17.07.2018
13:54:59

Anton
17.07.2018
13:55:34

Rafael
17.07.2018
13:55:35

Pavel
17.07.2018
13:55:54
И мы приходим к тому, что во Вью реактивны из коробки только примитивы, так?
полностью реактивны

Rafael
17.07.2018
13:56:14

DimenSi
17.07.2018
13:57:11
Я не знаю, что он пытается нам доказать.

Pavel
17.07.2018
13:57:19
Ладно, закроем тему )

DimenSi
17.07.2018
13:57:35
https://github.com/vuejs/vue/blob/dev/src/core/observer/index.js#L134

Alex
17.07.2018
13:58:17

Anton
17.07.2018
13:58:56
*родитель-потомок

Дмитрий
17.07.2018
13:59:58
Какие данные смотреть в результатах webpack-bundle-analyzer? Stat size или Gzipped size?

DimenSi
17.07.2018
14:03:09
Gziped у тебя на беке может быть настроен слабей и или сильней, поэтому наверно лучше stat

Дмитрий
17.07.2018
14:05:01

DimenSi
17.07.2018
14:05:31
Прогонял через tiny png и gzip

Дмитрий
17.07.2018
14:06:26

Andrey
17.07.2018
14:06:38