Я использую vue в обычных файлах js (не .vue) и встроенных шаблонах. У меня есть несколько загружаемых компонентов в зависимости от подстраницы. Что я хотел сделать, так это загрузить некоторые глобальные переменные vue и компоненты vue, а затем динамически, используя jQuery, загрузить дополнительный скрипт компонентов vue, если некоторый контейнер (например, #blog) имеет длину> 0.
Проблема в том, что Vue выдает ошибку, заключающуюся в том, что он нашел теги Vue, но не смог зарегистрировать компонент.
Есть ли способ динамически загружать файлы JS? У меня действительно большой веб-сайт с множеством js-файлов, которые я хочу загружать только на определенных подстраницах. Он отлично работает для всех библиотек jQuery, но, к сожалению, не для компонентов Vue.
Пример компонента ниже:
Vue.component('blog-entries', {
name: "blog-entries",
template: require('js/vue/home/blog/blog.html').template,
data: function () {
return {
blog_entries: [
]
}
}
});
и ошибка:
[Предупреждение Vue]: Неизвестный пользовательский элемент: - Вы правильно зарегистрировали компонент? Для рекурсивных компонентов обязательно укажите параметр «имя».
(найти в )
загрузить скрипт:
function loadScript(scriptName, callback) {
if (!_arr[scriptName]) {
_arr[scriptName] = true;
var body = document.getElementsByTagName('body')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = scriptName;
// then bind the event to the callback function
// there are several events for cross browser compatibility
// script.onreadystatechange = callback;
script.onload = callback;
// fire the loading
body.appendChild(script);
} else if (callback) {
callback();
}
};