Я думаю, что было недоразумение. Насколько я могу судить, вы пытаетесь загрузить User.html
так, как если бы вы загружали файл .vue
, но это не сработает, если вы не используете Webpack для создания своего проекта, поскольку тип файла .vue
то, что vue-loader
проект отвечает за синтаксический анализ.
Vue Router CDN означает, что вы не строите с помощью Webpack, поэтому загрузка компонента, который вы делаете, невозможна. Вы можете настроить Vue Router для обслуживания файла User.html, но этот файл не может быть компонентом шаблона, поскольку в режиме CDN Vue Router не знает, какие файлы находятся на вашем сервере, и не может просто получить их.
Так что вам нужно сделать один из следующих трех вариантов:
Вариант 1. Начните использовать Webpack для своего проекта
Это то, что я рекомендую вам делать. Вы обнаружите, что ваш проект будет работать лучше, и его будет легче разрабатывать, используя его.
Вариант 2. Используйте правильный синтаксис шаблона для CDN
Это, например:
var mytemplate = `<div>
<h1>This is my template</h1>
</div>`
Vue.component('mycomp1', {
template: mytemplate
});
Vue.component('mycomp2', {
template: `
<div>
Hello, {{ name }}!
</div>
`,
props: ['name'],
});
Вы не можете загружать другие файлы в качестве шаблонов, когда не создаете с помощью Webpack. Webpack помещает их в ваше одностраничное приложение для вас, Vue Router не знает, что находится внутри User.html
, и Vue не может использовать его в качестве шаблона. Vue Router можно попросить перенаправить на полностью функциональную страницу User.html
, а не просто использовать ее в качестве шаблона.
Вариант 3. Использование Ajax-запросов для извлечения файла шаблона
Это то, что я НАСТОЯТЕЛЬНО ПРИЗЫВАЮ ВАМ НЕ ДЕЛАТЬ, но ради полноты вы можете использовать версию CDN, если вы извлекаете содержимое файла User.html
с помощью запроса Ajax и создаете из него компонент.
Я действительно, очень рекомендую вам прекратить использовать версию CDN и вместо этого пойти на решение на основе Webpack, уступить темной стороне! Или сделайте его еще проще и используйте вместо него Nuxt.js, поскольку новичкам легче его использовать.