#javascript #vue.js
#javascript #vue.js
Вопрос:
В настоящее время я импортирую свой компонент динамически по мере необходимости, однако, если в компоненте требуется много изменений, я бы хотел создать его новую версию, однако в некотором смысле это все тот же компонент.
У меня есть следующее в моем app.js:
Vue.component( 'favourites-panel', () => import('./components/Favourites/Panel.vue' );
Могу ли я изменить приведенное выше на что-то подобное и получить версию из prop
? Очевидно, что это теоретический код!
Vue.component( 'favourites-panel', (e) => import('./components/Favourites/Panel' e.version '.vue' );
Вот как я вызываю свой компонент:
<favourites-panel version="1"></favourites-panel>
Ответ №1:
Нет, это невозможно для «управления версиями» компонента с использованием объекта props.
Прежде всего, вам нужно понять, что вы делаете: Vue.component
это функция для глобальной загрузки всех компонентов, которые вы хотите. Вы можете передать абсолютный путь или, если требуется, обещание.
В этом случае вы хотите загрузить свой компонент асинхронно, а оператор import возвращает обещание. Если вы проверите e
свойство, вы увидите, что это обратный вызов resolve.
Написание:
Vue.component( 'favourites-panel', () => import('./components/Favourites/Panel.vue' );
или:
Vue.component('favourites-panel', function (resolve) {
require(['./components/Favourites/Panel.vue'], resolve)
})
Это одно и то же, оба возвращают объект Promise.
Для решения вашей проблемы вы можете добавить переменную окружения, а затем загрузить
компонент в соответствии со значением этой конкретной переменной среды.
Комментарии:
1. Черт, видишь ли, я не могу использовать переменную окружения, поскольку это было бы для каждого клиента и для каждого компонента.
Ответ №2:
Нет, это совершенно неправильный подход как к управлению версиями, так и к управлению зависимостями. Вместо этого вы должны создавать модули NPM вашего компонента (ов), а затем, если по какой-то причине вам нужно снова использовать старый, вы можете npm install
использовать старую версию.
Комментарии:
1. У вас есть какие-либо причины для этого? Как будто даже требуется небольшая модификация, с npm это вообще будет невозможно