Дмитрий
Кто-нибудь делал большое приложение на Vue, с большим количеством компонентов? По советуйте что почитать по по архитектуре и структуре масштабируемого приложения. Может есть примеры на гитхабе?
Rafael 🌵
У меня на работе порядка 150-200 компонент и просто масштабируется все
Serge
Immutable для предотвращения изменения данных
основная задача - это быстрое клонирование. и получается что редукс - это сначала паттерн с неизменяемостью стейта через копирование, а потом костыль в виде immutable для более быстрого клонирования ибо тормоза и контроля этого паттерна
Serge
Основная задача - это консистентность данных, а быстрое клонирование - это лишь оптимизация.
сначала выдумали гемор, потом оптимизация этого гемора. Притянуто конечно, но суть отражает
Serge
mobx как то лучше выглядит
Rafael 🌵
Отнюдь
Приду на работу, напишу доказательство
саша
основная задача - это быстрое клонирование. и получается что редукс - это сначала паттерн с неизменяемостью стейта через копирование, а потом костыль в виде immutable для более быстрого клонирования ибо тормоза и контроля этого паттерна
Грубо говоря есть у вас асинхронный экшен, в который vuex передаёт state. После выполнение первой асинхронной функции во Vuex нельзя быть уверенным, что в том state, который находится в скоупе данные всё те же, которые были перед вызовом асинхронной функции, от этого могут возникнуть серьёзные проблемы.
саша
Конечно в однопоточных приложениях js, где минимальной единицой исполнения является последовательность синхронных действий, это не так существенно, но в многопоточных приложениях это создаёт невероятную боль.
Rafael 🌵
Я не встречал
Приходите на митап в Москве там поболтаем, я расскажу как выстроена у нас архитектура
саша
Блокировки, глобальные флаги и прочее подобное счастье - следствие мутабельности.
саша
слишком дорого обходится решение, которое можно решить точечно, где это необходимо.
Дорого это обходится лишь иногда. А чтобы определить где же именно происходит это иногда, нужно профилировать уже готовое приложение.
Serge
Дорого это обходится лишь иногда. А чтобы определить где же именно происходит это иногда, нужно профилировать уже готовое приложение.
Ничего не нужно профилировать, если нормальная архитектура и взаимодействие с BE. И так будет понятно, где может стрельнуть
саша
Ничего не нужно профилировать, если нормальная архитектура и взаимодействие с BE. И так будет понятно, где может стрельнуть
Ну да, все те программисты, которые в своих книгах пишут - сначала профайлинг, а потом уже оптимизация просто глупые, не то что вы.
саша
А потом вы выкатываете результат, а заказчик выкатывает болт и говорит, что нужно там вон поменять и тут и вообще половину проекта надо перепилить.
CherryTea
почему же он называется реакт? )
саша
любой каприз за ваши деньги (с) поэтому и нужно предпроектное и ТЗ
А если у компании свой IT отдел и никто ей дополнительные деньги за доработку проекта не заплатит.
Rafael 🌵
у реакта нет реактивности?
В нем нет реактивности как у вью
CherryTea
А если у компании свой IT отдел и никто ей дополнительные деньги за доработку проекта не заплатит.
а вот это как раз про нас - если у компании свой продукт то разработка не кончается никогда
Serge
А если у компании свой IT отдел и никто ей дополнительные деньги за доработку проекта не заплатит.
тогда дебаг и отлов багов после очередных доработок будет бесконечный, хоть с redux, хоть с vuex
CherryTea
В нем нет реактивности как у вью
ээ, если они работают принципиально по разному, за счет чего обеспечивается работа jsx ? я так понимаю в реакте нету байндинга данных ?
саша
ээ, если они работают принципиально по разному, за счет чего обеспечивается работа jsx ? я так понимаю в реакте нету байндинга данных ?
Нет. Там состояние иммутабельно и все его изменения происходят явно при вызове setState(...). После вызова реакт перерисовывает компонент в VDOM и смотрит, что нужно поменять в DOM.
саша
Тем не менее это не значит, что там нет реактивности. Да и вообще реактивность по дефолту - это ФП паттерн, а в фп все данные по дефолту иммутабельны. В этом плане реакт куда более канонично "реактивен".
Serge
А если у компании свой IT отдел и никто ей дополнительные деньги за доработку проекта не заплатит.
основная моя прензия к redux (да и к реакт) - это очень много паразитного кода (это я про экшны и редьюсеры) и отсутствие чётких паттернов программирования и излишняя свобода в его отрицательном проявлении. 1001 способ сделать одно и то же и все неочевидно правильные. а дополнительные либы типа иммутабля - это решение проблем, которую породил redux
Serge
всё это в перспективе выльется в трудно читаемый и модифицируемый код
Serge
> реакт и отсутсвие четких паттернов программирования -_-
ну а что не так ? не реакт сам по себе, а разрозненная экосистема. На одном реакте далеко не уедешь
саша
основная моя прензия к redux (да и к реакт) - это очень много паразитного кода (это я про экшны и редьюсеры) и отсутствие чётких паттернов программирования и излишняя свобода в его отрицательном проявлении. 1001 способ сделать одно и то же и все неочевидно правильные. а дополнительные либы типа иммутабля - это решение проблем, которую породил redux
1) всё это выливается из того, что разработчики не знакомы с ФП в должной мере, многие даже SICP не читали 2) Immutable.js используется не только совместно с redux. Т.к. в JS нет никаких иммутабельных структур, эта либа единственный адекватный вариант, когда они нужны очень часто.
Serge
1) Я согласен. Тем более я вообще чайник и ни разу не фрондэндщик. Просто волею судьбы занесло. 2) т.к. см п.1 я вообще не понимаю само понятие иммутабельных структур. не надо - не меняй. какие проблемы ? Зачем для этого целая либа ? Я подозреваю, что оно выдумано реактивщиками для решения каких то своих проблем...
саша
1) Я согласен. Тем более я вообще чайник и ни разу не фрондэндщик. Просто волею судьбы занесло. 2) т.к. см п.1 я вообще не понимаю само понятие иммутабельных структур. не надо - не меняй. какие проблемы ? Зачем для этого целая либа ? Я подозреваю, что оно выдумано реактивщиками для решения каких то своих проблем...
Мутабельные структуры оптимизированны для того, чтобы их использовать как мутабельные структуры. В JS все структуры(Object, Array, Map) мутабельны, и их использование как иммутабельных структур не слишком эффективно. Immutable.js реализует иммутабельные структуры на низком уровне так, чтобы с ними можно было работать именно как с иммутабельными структурами и не терять при этом в производительности.
Rafael 🌵
вышла beta3 у vuetify
Rafael 🌵
:)
Serge
:)
поздравляю )
Serge
потому что кто будет это контролировать?
эээм. компилятор и тот кто пишет код ?
Rafael 🌵
эээм. компилятор и тот кто пишет код ?
выше уже писали, что в js по дефолту мутабельные структуры
Rafael 🌵
эээм. компилятор и тот кто пишет код ?
а программисты те еще гавнюки
Serge
а программисты те еще гавнюки
т.е. либа создана только для контроля за говнокодерами в реакте т.к. в реакте эта проблема проявляется особенно остро в силу архитектурных особенностей ? Я всё правильно понимаю ?
Rafael 🌵
ты врятли помнишь все прототипв функций, их принимаемые типы
Rafael 🌵
точно так же ты не помнишь, какие структуры иммутабельны
Rafael 🌵
по этой же причине юзают ts и flow - потому что проверки типов они делают за тебя
Alex
от это вы успели понаписать)
Serge
точно так же ты не помнишь, какие структуры иммутабельны
ну фиг знает. Ну я же понимаю, когда я пишу что, зачем, куда я присваиваю. Зачем мне задумываться об защите от изменения настолько, чтоб пилить отдельную надстройку ? ну и да. тут я ts юзаю в основном
енот
хм, а где почитать как мне внутри одного *.vue вызвать другой?
Rafael 🌵
на js или вообще ?
тот, что ты делаешь
Rafael 🌵
кусок, с которым ты работаешь
Alex
:)
👍
Alex
У реакта реактивности данных - нет, поэтому им нужна иммутабельность
А разве она изначально не затаскивается чтобы удобнее было shouldcomponentupdate писать?
Alex
Ну чтобы удобнее было сравнивать все объекты в shouldComponentUpdate и тащат Immutable, там же можно сразу два объекта сравнить
Alex
ну мне по крайней мере казалось что Immutable только для решения это проблемы и сделали :)))
Alex
ну и соответственно так как вью за нас определяет нужно ли компоненту обновляться, поэтому и иммутабл не нужен
Anonymous
Хочу задать глупый вопрос. А если я не делаю полноценное приложение на vue, а только для динамики форм и т.д. и хочу чтобы проект работал хоть как то и без js. У меня есть какой то select, как данные из этого селекта запихать а данные vue? Или это совсем уже ерунда какая то выходит?
Alex
пока сложно понять вас)
Anonymous
Ну я так и понял )
Alex
если без js какая инициализация
Serge
тот, что ты делаешь
вообщем достаточно
Anonymous
вам наверное нужен server-side rendering, кое-что будет в этом случае работать и без js, но где вы нашли таких клиентов, которые js не поддерживают?
У меня джанга на бэке. Там мощные формы и т.д. Хочется это увязать с vue. А потом кэшировать и выплевывать
Anonymous
если без js какая инициализация
Наврено, вопрос был у меня в том, можно ли из html разметки вытащить данные в vue при инициализации, не писав при этом грабли. Думал может есть какой то метод.