Я пытаюсь загружать внешние библиотеки динамически, используя vue. В этом случае эти библиотеки имеют vue компоненты, которые я хотел бы использовать. Моя текущая настройка следующая:
- Загрузка скриптов программно из CDN:
// The src CDN can change.
const src = 'https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js';
const newScript = document.createElement('script');
newScript.src = src;
newScript.async = false;
newScript.type = 'text/javascript';
document.body.appendChild(newScript);
- Позже в коде я хотел бы использовать компонент динамически после завершения загрузки:
<component :is="dynamicComponent" v-bind="componentProperties">
<!-- More things inside -->
</component>
где dynamicComponent
- это свойство данных, которое можно изменить, и оно установлено как VBtn
(пробовал также v-btn
).
Однако этот подход не работает, поскольку компоненты еще не зарегистрированы в глобальном масштабе.
Я получаю следующую ошибку: Unknown custom element: <VBtn>
.
Я также пытался сделать Vue.use(window.Veutify)
после того, как window.Vuetify
доступен, и проблема все еще существует.
Я также пытался дождаться доступности компонента с помощью
waitFor(() => Vue.options.components[dynamicComponent]).then(...)
однако он никогда не входит в функцию then
. Интересно, что когда я помещаю Vue.options.components['VBtn']
в консоль, я возвращаю компонент обратно.
Я боролся с этим некоторое время. Будем весьма благодарны за любые предложения, документацию, ссылки или другие подходы, просто отметьте, что мне нужно полагаться на динамическую загрузку библиотек и динамическую загрузку их компонентов.
Заранее спасибо.