Разделение Vue-приложения на компоненты

Практически каждый разработчик проходит похожий путь.

В начале карьеры решение задачи выглядит как один большой файл. Главное — чтобы программа работала.

Со временем появляются первые функции. Затем — классы, сервисы, утилиты, модули. Постепенно приходит понимание, что большой объем кода сам по себе не является проблемой. Настоящая проблема возникает тогда, когда одна часть кода одновременно отвечает за множество разных задач.

Опытные разработчики стремятся разделять систему на небольшие самостоятельные части с четкими зонами ответственности. Такой код легче читать, тестировать, изменять и повторно использовать.

Интересно, что этот навык не всегда автоматически переносится между разными областями разработки.

Например, backend-разработчик может прекрасно проектировать архитектуру: выделять сервисы, репозитории, доменные модели, соблюдать принципы SOLID и разделения ответственности. Но, создавая Vue-приложение, он нередко начинает писать компоненты на тысячу строк, в которых вперемешку находятся шаблон, бизнес-логика, работа с API, обработчики событий и вспомогательные функции.

Конечно, frontend имеет свою специфику. Поэтому он требует отдельного разговора.

Читать далее

Vue.js Composables. Лучшие практики

После выхода Composition API разработчики приложений на Vue получили в свое распоряжение композиционные функции — еще один способ разбить код на небольшие модули для лучшей читаемости и повторного использования. Так были решены проблемы, которые мы имели применяя иные подходы: Mixins (Миксины) и Renderless Components (Компоненты без представления). Но спустя время многие из нас не достаточно хорошо владеют тонкостями написания Composables. В этой статье вы найдете описание важных моментов, благодаря которым ваш код будет становится более поддерживаемым.

Читать далее

Sentry. Особенности подключения к Vue SPA

При подключении Sentry к backend, например, PHP Laravel, обычно не требуется внесения замысловатых настроек. Нужно установить пакет и прописать DSN. В случае же использования Sentry для отслеживания ошибок во frontend появляется ряд специфичных моментов. В этой статье будут собраны описания таких ситуаций и решения для них.

Читать далее

Перевод строк с html-разметкой в Vue I18n

Если в вашем Vue-приложении переводы работают через Vue-i18n, то вы наверняка сталкивались с ситуациями, в которых приходилось добавлять перевод для фразы, которая содержит html-разметку. Чаще всего это ссылки (тег a) или строковые контейнеры (тег span), позволяющие сделать акцент на определенных частях фразы. В таких ситуациях самым легким решением кажется добавить фразу вместе с разметкой в JSON с переводами, а вывод сделать через v-html. Давайте посмотрим какие с этим есть проблемы и как можно сделать лучше.

Читать далее

Vue. Динамическое переключение компонентов

Чтобы не повторять себя (принцип DRY) при разработке Vue-приложения приходится прибегать к различным приемам. Одним из таких приемов (не так сильно известным, кстати) является применение атрибута is для динамического переключения между компонентами. В этой статье будет показано и рассказано как можно использовать такой подход.

Читать далее

Передача данных на много уровней Vue компонентов

This entry is part 7 of 7 in the series Vue. Повторное использование кода

Чтобы в коде проще было ориентироваться и поддерживать его мы разделяем его на небольшие части, которые легко укладываются в голове и на экране. Во Vue, в основном, такие части будут представлены компонентами. Мы дробим интерфейс пользователя на ряд компонентов, которые используют друг-друга образуя дерево (иерархию).

Читать далее

Есть ли наследование во Vue.js

This entry is part 6 of 7 in the series Vue. Повторное использование кода

В данной статье мы подведем некоторые итоги по вопросу повторного использования кода, который освещался с разных сторон на протяжении нескольких статей. Вспомним более давние статьи на эту тему. Также на основе этой информации определим есть ли во Vue.js наследование.

Читать далее

Vue. Продвинутая работа со слотами

This entry is part 5 of 7 in the series Vue. Повторное использование кода

В этой статье мы продолжим обсуждение темы повторного использования кода во Vue.js. Тема была начата несколькими статьями ранее. Здесь, как и было обещано ранее, будет обсуждение расширенной работы со слотами и описание вариантов того, как это можно применить в реальных проектах.

Читать далее

Vue 3 expose

This entry is part 4 of 7 in the series Vue. Повторное использование кода

В этой статье будет рассказано про новшество под названием expose появившееся во Vue версии 3.2. Эта возможность будет использована в развитии примера компонента-таблицы на Vue, создание которого описывается в предыдущих статьях.

Читать далее

Таблица на Vue 3. Добавляем Scoped Slots

This entry is part 3 of 7 in the series Vue. Повторное использование кода

В прошлой статье мы сделали на Vue 3 с нуля таблицу для отображения данных, получаемых с сервера. Эта таблица имеет разбивку на страницы и возможность менять сортировку. А в этой новой статье будет показано как сделать тот код более пригодным для повторного использования. Будет рассказано о технике, которая делает компоненты гораздо более универсальными.

Читать далее

Таблица на Vue 3. Создание компонента

This entry is part 2 of 7 in the series Vue. Повторное использование кода

Данная статья появилась на свет по двум причинам. Во-первых ряд читателей приходили с вопросами о создании компонента-таблицы на Vue. Во-вторых в прошлой статье мы подошли к продвинутому использованию слотов. И такой компонент послужил бы неплохим кандидатом для применения данных техник. Сами техники эффективного расширения компонентов слотами будут продемонстрированы в следующей статье. А в этой будет описано создание начальной версии таблицы, которую потом можно будет развивать.

Читать далее

Vue. Пути улучшения возможностей повторного использования ваших компонентов

This entry is part 1 of 7 in the series Vue. Повторное использование кода

В этой статье хотелось бы начать освещать вопрос лучшего опыта повторного использования Vue компонентов. Разработчики часто ведут поиск информации на тему наследования компонентов во Vue. Вероятно, что это связано с тем, что наследование — самый очевидный и частый способ, которым обычно программисты добиваются повторного использования кода, если требуется обеспечить похожее (но с некоторыми отличиями) с имеющимся поведение.

Но повторное использование можно (и даже оптимальнее) осуществлять за счет других подходов. Набор приемов куда как более велик. Предлагаю вам поразмышлять на эту тему вместе с автором в нескольких статьях.

Читать далее