@vuejs_ru

Страница 428 из 3900
Andrey
11.05.2017
20:16:28
ну на этапе активной разработки, особенно в самом начале это реально кучу времени съедает

Andrey
11.05.2017
20:23:27
Google
Andrey
11.05.2017
20:24:02
у меня есть коммиты которы не отображаются в тулзах

Rafael
11.05.2017
20:27:00
Хмм

Andrey
11.05.2017
20:27:16
ну я так то же думал, в итоге такое есть

Rafael
11.05.2017
20:27:31
А если серьёзно, то как комиты могут быть неудачными?

Там же даже ветвления почти быть недолжно

Andrey
11.05.2017
20:27:53
ну если у тебя в мутации ошибка произошла

Rafael
11.05.2017
20:28:21
ну если у тебя в мутации ошибка произошла
А как она может произойти? Я вот в мутации ТОЛЬКО меняю значения полей и все

Andrey
11.05.2017
20:28:35
у меня там есть некотороя логика

Rafael
11.05.2017
20:28:39
Даже от ветвлений избавлюсь по максимуму

у меня там есть некотороя логика
Она должна быть в дейсьвиях

Andrey
11.05.2017
20:28:54
Google
Rafael
11.05.2017
20:28:58
Мутация мутирует, тупо мутирует

Andrey
11.05.2017
20:29:00
там не асинхронной логики

Rafael
11.05.2017
20:29:02
Действия для логики

Andrey
11.05.2017
20:29:46
это атомарная операция

Rafael
11.05.2017
20:29:54
Просто то что нужно помом делаешь в then

Andrey
11.05.2017
20:30:06
поэтому там должно быть то что должно быть выполнено атомарно

Alexandr
11.05.2017
20:32:15
мутация чисто для того, чтоб стор изменить

Andrey
11.05.2017
20:32:59
да, но у этого изменения может быть логика

Rafael
11.05.2017
20:33:13
поэтому там должно быть то что должно быть выполнено атомарно
Если в действии ты вызывуешь мутацию, это типо не атомарно?

Andrey
11.05.2017
20:33:39
идеологически мутация = транзакции

если тебе в рамках одной транзакции надо сделать несколько изменений основанных на логике, то ты делаешь их в рамках одной транзакции

правда жалко что нет ролбэка при ошибках

Stanislav
11.05.2017
20:40:43
Andrey
11.05.2017
20:41:06


в рамках идеологии каждое действие это атомарная транзакция

при добавление просто доабвляем в лист

при удалении нам еще надо удалить маркер

просто какой тогда смыл в мутациях, если можно сделать одну типа set (state, data) { _.assignIn(state, data) },

а в actions уже какая-то асинхронщина, логика для вызова мутиаций/последовательности мутаций

Google
Andrey
11.05.2017
20:47:07


поправте меня, если я это не правильно понимаю

Rafael
11.05.2017
20:53:59
в рамках идеологии каждое действие это атомарная транзакция
Ога, только у тебя функция тоже является атомарной

Поэтому действие атомарно

Rafael
11.05.2017
20:54:52
не каждая
Привели пример не атомарной функции, внутри которой нет асинхронщены

И которая не атомарна

Andrey
11.05.2017
20:55:12
ну да, я про асинхронщину

Rafael
11.05.2017
20:55:44
Так вот vuex тебе разрешаешь делать композицию действий, вот она не будет атомарной

Я так придерживаясь всегда: 1) тупая мутация 2) действия с логикой (обёртка над мутацияей) 3) композиция действий для сложной логики

До сих пор НИКАКИХ проблем не испытывал

И это легко дебажится

Andrey
11.05.2017
20:57:26
тоесть вместо того что бы сделать одну функцию в рамках бизнес логики ты делаешь несколько ?

Alexandr
11.05.2017
20:57:50
^ да

Rafael
11.05.2017
20:57:57
Причём если ты наименования мутаций содержишь в константах, то именовать действия обертки ваще легко

Alexandr
11.05.2017
20:58:02
я так делал

Alexandr
11.05.2017
20:58:28
экшн диспатчит экшн

Rafael
11.05.2017
20:58:29
И это не мешает мне, потому что vuex поддерживает модули

Константное именование мутация позволяет мне не париться над именования действий аберток и сразу видно, где обёртка а где действие

Google
Rafael
11.05.2017
20:59:48
тоесть вместо того что бы сделать одну функцию в рамках бизнес логики ты делаешь несколько ?
И кстати это смешной вопрос от человека, который сейчас сидит и дебажит мутации))

Andrey
11.05.2017
20:59:58
Да
вот этого я не понимаю. У тебя есть задача создать point на карте. Зачем тебе делать несколько экшенов, если это единая логическая оперция?

Rafael
11.05.2017
21:00:44
Это как геттер и сеттер, также идеалогия

Andrey
11.05.2017
21:00:56
зачем тебе другие мутации кроме _.assignIn(state, data)?

Rafael
11.05.2017
21:01:21
Я сразу виду, что там произошло и могу спокойно размотать стек вызовов, потому что он будет очевидным

Admin
ERROR: S client not available

Andrey
11.05.2017
21:04:13
ну да, вот у меня так же

Rafael
11.05.2017
21:04:24
Не такой уж ибольшой оверхед

Мутация только мутирует и все, а всякие там проверки и прочая лабуда в действии

Кстати из-за этого еще и мутации становятся чистыми и понятными

Смотришь на эти пару строк и сразу все ясно

Andrey
11.05.2017
21:11:40
вообще выглядит логичным

https://github.com/vuejs/vuex/blob/dev/examples/chat/store/mutations.js

Roman
11.05.2017
22:41:29
Всем привет) а кто-нибудь подскажет ссылку на best practices, patterns по vuejs? в официальной доке, на мой взгляд, их маловато

Oleg
11.05.2017
22:42:38
Никто не натыкался на infinity-scroll с preload и afterRemover? Нужно грузить картинки отрисвывать их и после скрола дальше удалять с страницы заменяя пустым div'ом.

Google
Illya
11.05.2017
22:45:11
да и ангуляра по сути

Roman
11.05.2017
22:45:58
интересно. а я уже начал бояться, что начинаю применять некоторые react паттерны во vue x)

Illya
11.05.2017
22:52:39
1) не нарушайте S в SOLID - ваши UI-компоненты должны делать ровно одну вещь. Если в описании что компонент делает используется "и" - это может быть хорошим поводом разбить его на отдельные компоненты 2) разделяйте "умные" компоненты в которых хранится логика приложения и "глупые" отвечающие только за представления. Для глупых может быть оправдано использование functional: true 3) здесь вам не Реакт(с). Не передавайте обработчики событий в нижние компоненты (вместо этого emit события делайте), не передавайте в нижние компоненты "рендерилки" каких-то кусков - вместо это во Vue положено использовать слоты 4) максимально разделяйте бизнес логику, логику отображения и транспортный слой. Транспортный слой вообще стоит делать framework-agnostic, бизнес-логику можно выносить в vuex если вы его используете или в отдельные сервисы. Избегайте бизнес-логики в глупых компонентах любой ценой 5) По максимуму используйте вычислимые свойства. Причем в обе стороны - это позволяет упростить код шаблона и бизнес-логики одновременно, сохранив тонкий слой преобразований 6) Старайтесь не расширять прототип Vue. Это приводит к тому, что становится сложно рассуждать откуда появились те или иные методы у компонента - вместо этого лучше использовать обычные es6 модули и помнить, что они синглтоны 7) Очень аккуратно наследуйте компоненты. Это нужно крайне редко, сценарий - специализация компонент и "тонкая настройка". Но еще раз - это стоит делать очень редко и очень аккуратно 8) Не бойтесь использовать jquery и т.п. - много вещей можно быстро сделать с их помощью, но всегда изолируйте их в отдельные компоненты. Не допускайте больших компонентов c vue-логикой и jquery спагетти-кодом 9) Избегайте шины событий. Это допустимо для небольших проектов, но такое решение очень плохо масштабируется. Выгоднее мыслить в терминах изменения состояний 10) Аккуратно обращайтесь с реактивностью - не забывайте использовать Vue.$set когда надо, пишите ваши компоненты устойчивыми к ошибкам

Это из моих набросков

Roman
11.05.2017
22:54:57
Ого, спасибо)

Сашка
12.05.2017
04:27:02
Это из моих набросков
В шапку, срочно!

DEFACE
12.05.2017
05:30:39
Всем привет

Я хочу использовать vue-resource, установил его и импортирую в верхнем компоненте App

var VueResource = require('vue-resource'); Vue.use(VueResource);

он поидее теперь во всех компонентах должен быть доступен как this.$http?

Alex
12.05.2017
05:33:16
Да

DEFACE
12.05.2017
05:34:15
Да
Я собственно так и думал, но у меня почему то не так. Если вывести в консоль VueResourse то свойство показывает что он установлен, а если попробывать сделать запрос - то получаю ошибку

Error in created hook: "TypeError: Cannot read property 'get' of undefined"

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

https://gist.github.com/be1fc17f06a5c3d63a81725486084eec

Alex
12.05.2017
05:43:00
created не слишком рано? попробуй на mounted поменять

DEFACE
12.05.2017
05:43:32
Error in mounted hook: "TypeError: Cannot read property 'get' of undefined" found in —-> <Project> at /home/deface/PycharmProjects/src/b2b/static/pm/src/components/Project.vue

Alex
12.05.2017
05:45:39
значит что-то не так делаешь, а покажи код компонента выше

Страница 428 из 3900