Size: a a a

Nuxt.js — русскоговорящее сообщество

2020 March 06

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
По поводу статьи: можно улучшить статью если убрать из неё всё лишнее что не касается накста и существенно сократить количество кода (как минимум вырезать все стили). Ещё для новичка очень важно понимать почему мы что-то делаем.

Берём стору? — Почему?
Храним глобальные свойства в контексте? — Почему?
Ну и так далее.
Про то что стиль написания «не очень», согласен
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Про аксиос и миксины и модалки
В глобальную модалку очень сложно что-то передать и по сути она нам неподконтрольна. Каждый раз когда мы захотим её настроить нам придётся создавать ещё один аргумент к вызову функции, хотя это уже и так всё доступно из коробки при компонентном подходе.
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
По поводу статьи: можно улучшить статью если убрать из неё всё лишнее что не касается накста и существенно сократить количество кода (как минимум вырезать все стили). Ещё для новичка очень важно понимать почему мы что-то делаем.

Берём стору? — Почему?
Храним глобальные свойства в контексте? — Почему?
Ну и так далее.
Про то что берем стору было в первой и второй части
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
В глобальную модалку очень сложно что-то передать и по сути она нам неподконтрольна. Каждый раз когда мы захотим её настроить нам придётся создавать ещё один аргумент к вызову функции, хотя это уже и так всё доступно из коробки при компонентном подходе.
Но ведь она на то и глобальная, мы его применяем на всех страницах, она в хедере, это исключительный случай
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Класть вещи в контекст компонента не имеет никакого смысла, это несёт за собой даже негативный эффект потому что нет явных зависимостей и невозможно будет какую-то часть кода тришейкнуть. Ещё все компоненты получают к этому доступ, хотя они могут в нём совершенно не нуждаться. Для тестов это тоже будет проблемой.
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Но ведь она на то и глобальная, мы его применяем на всех страницах, она в хедере, это исключительный случай
Из того что я вижу этой модалке совершенно не важно где находиться, её можно было вынести в компонент <CustomerCardModal> и вызывать его в том месте где он требуется вместо того чтобы его хранить глобально.
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Про миксины очень много информации в интернете, короткий смысл в том что они неявно патчат контекст и невозможно разобраться среди нескольких миксинов что откуда приходит. У вас нет перед глазами действительного представления компонента, часть логики скрыта за миксинами.
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
Из того что я вижу этой модалке совершенно не важно где находиться, её можно было вынести в компонент <CustomerCardModal> и вызывать его в том месте где он требуется вместо того чтобы его хранить глобально.
Так он и хранится отдельно и рендерится в одном месте в  layout. Можно спокойно этот компонент покрыть тестами. А чтобы облегчить отладку можно не напрямую вызвать modal.show а через commit например
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
Про миксины очень много информации в интернете, короткий смысл в том что они неявно патчат контекст и невозможно разобраться среди нескольких миксинов что откуда приходит. У вас нет перед глазами действительного представления компонента, часть логики скрыта за миксинами.
Про миксины есть 2 точки зрения: это зло и в 3 вью их не будет и «ребята во вью 2 это норм»
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Так он и хранится отдельно и рендерится в одном месте в  layout. Можно спокойно этот компонент покрыть тестами. А чтобы облегчить отладку можно не напрямую вызвать modal.show а через commit например
Просто в этом нет смысла. Компонент должен находиться там где он необходим. Нет никакой необходимости держать <CustomerCartModal> в шапке, эта модалка и она глобальная. Если возникают проблемы с вёрсткой и нужно разместить его вне дерева приложения тогда можно использовать vue-portal
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Про миксины есть 2 точки зрения: это зло и в 3 вью их не будет и «ребята во вью 2 это норм»
Я бы не стал новичкам вообще рекомендовать миксины. Точек зрения много, но то что миксины зло появилось не на пустом месте, а от огромного опыта с ними и боли которую они причиняют.
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
Я бы не стал новичкам вообще рекомендовать миксины. Точек зрения много, но то что миксины зло появилось не на пустом месте, а от огромного опыта с ними и боли которую они причиняют.
Что плохого в миксине с одной функцией, которую мы локально подключаем к нужным компонентам?
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Если бы миксины всех устраивали мы бы сейчас не возились с Composition API
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Что плохого в миксине с одной функцией, которую мы локально подключаем к нужным компонентам?
В том что это может легко выйти из под контроля. Сначала подключили в одном месте, потом в другом, потом в третьем. И так не заметили как у нас 10 миксинов на компоненте. Можете посмотреть код bootstrap-vue, там всё на миксинах. Попробуйте понять что там происходит, это будет очень сложно.
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Новичков лучше сразу учить хорошему, чем «вот так тоже можно». Как тоже можно лучше они пусть узнают после того как знают как делать хорошо.
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
Просто в этом нет смысла. Компонент должен находиться там где он необходим. Нет никакой необходимости держать <CustomerCartModal> в шапке, эта модалка и она глобальная. Если возникают проблемы с вёрсткой и нужно разместить его вне дерева приложения тогда можно использовать vue-portal
Так а если он необходим в принципе в layout и его может вызвать и какое-то левое событие и нажатие на кнопку в разных частях приложения. Как добиться переиспользуемого кода другим образом? Если мы железно знаем что можно этот компонент смело включить в бандл так как он нужен везде
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
В том что это может легко выйти из под контроля. Сначала подключили в одном месте, потом в другом, потом в третьем. И так не заметили как у нас 10 миксинов на компоненте. Можете посмотреть код bootstrap-vue, там всё на миксинах. Попробуйте понять что там происходит, это будет очень сложно.
Пока что других удобных методов переиспользовать функции нет
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Так а если он необходим в принципе в layout и его может вызвать и какое-то левое событие и нажатие на кнопку в разных частях приложения. Как добиться переиспользуемого кода другим образом? Если мы железно знаем что можно этот компонент смело включить в бандл так как он нужен везде
Смотря что нам нужно реиспользовать. В вашем примере используется фильтр. Его достаточно просто ещё раз импортировать в нужном месте. Это никак не усложняет разработку зато не заставляет нас стрелять себе в ногу. К тому же фильтры тоже плохая практика на данный момент, они уже deprecated.
источник

SL

Stanislav Lashmanov in Nuxt.js — русскоговорящее сообщество
Антон Волков
Пока что других удобных методов переиспользовать функции нет
Любую функцию можно просто импортировать.
источник

АВ

Антон Волков in Nuxt.js — русскоговорящее сообщество
Stanislav Lashmanov
Смотря что нам нужно реиспользовать. В вашем примере используется фильтр. Его достаточно просто ещё раз импортировать в нужном месте. Это никак не усложняет разработку зато не заставляет нас стрелять себе в ногу. К тому же фильтры тоже плохая практика на данный момент, они уже deprecated.
Не спорю можно, вот только вызвать ее через this нельзя пока ручками не напишешь байндинн
источник