Загрузите и создайте компоненты VueJS на основе имени, строки или конфигурации.

Перво-наперво, если вы только начинаете работать с VueJS, это может показаться вам слишком продвинутым, я настоятельно рекомендую прочитать документацию по VueJS, особенно по компонентам.

Это мой первый гид, критика приветствуется :)

Предисловие

Замена компонентов на основе пользовательского ввода или даже просто установка формы с помощью файла json, действительно полезный метод для поддержания низкого уровня работоспособности на протяжении большого проекта, поскольку обычно есть сотни компонентов / форм / страниц / и т. Д., Поэтому внесение изменений в коде это может вызвать волновой эффект и что-то сломать.

Поскольку VueJS будет обрабатывать все грязные детали обработки DOM, мы можем сосредоточиться на решении бизнес-задач.

Я расскажу о загрузке компонентов по имени, создании динамических и асинхронных компонентов.

Компонент «магия»

Выполнение динамических задач не было бы таким простым без <component v-bind:is="dynComponent"></component> проверки Динамические и асинхронные компоненты для получения более подробной информации. В основном компоненты будут отображать компонент, асинхронную функцию или по имени компонента.

Загрузка компонентов по имени

Использование <component/> позволит вам получить доступ к глобальным, а также локальным компонентам по имени.

Попробуйте на Codepen

Цикл между компонентами полезен, но в реальном мире вы бы передали ему некоторые свойства. Чтобы добавить реквизиты, давайте изменим компонент test-comp0 и шаблон приложения.

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

Компоненты на лету

Компоненты «на лету» - это компоненты, которые мы просто генерируем по мере необходимости с помощью javascript. Это показывает, насколько мощным является <component></component>, в некоторых сценариях использования могут быть созданы виджеты.

Мы можем создавать и тестировать компоненты на основе пользовательского ввода.

ПРИМЕЧАНИЕ: будьте очень осторожны, это может позволить злоумышленникам атаковать ваше приложение. Убедитесь, что источник является надежным!

Попробуйте на Codepen

Вы можете видеть, как вы изменяете текстовое поле, компонент должен сразу отображаться. Я не рекомендую использовать это, но я думаю, что это хороший пример того, насколько мощным является <component></component>.

Импорт асинхронных компонентов

Для меня это наиболее полезный вариант использования компонента. Очень рекомендую прочитать официальный гид.

Проблема реального мира

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

Решение заключалось в том, чтобы получить определение пути в файле JSON, каждый раз, когда пользователь начинал путешествие, мы загружали этот файл и загружали поля. Стратегия заключалась в том, чтобы использовать имена для загрузки компонента, динамически загружая компоненты по имени, но в итоге мы загрузили все возможные редакторы в Vue.Component, это сработало ... но загрузка их при запуске означает, что время запуска и размер приложения были значительными. больше, чем нужно.

Решение

Использование смеси Async, Dynamic компонентов и Webpack.

Надеюсь, моя первая статья будет полезна для вас, я нахожу восхитительным, насколько мощным и гибким является <component></component>.

Если у вас есть еще варианты использования <component></component>, дайте мне знать в комментариях.