Хорошо, я потратил полдня на это, и, наконец, все заработало: vue -router + webpack + только для времени выполнения vue.
Это руководство было самый полезный Что я узнал:
Если вы используете vue -cli, версия vue находится в webpack.base.conf. js
- vue .esm . js будет включать компилятор
- vue. время выполнения .esm. js будет НЕ включать компилятор
Если вы хотите использовать среду выполнения, вы должны изменить main.js
. НЕ используйте это
new Vue({
el: '#app',
router,
template: '<App/>', // <== This is bad
components: { App }
});
и вместо этого DO используйте это
Vue.use(VueRouter); // <== very important
new Vue({
router,
render(createElement) {
return createElement(App);
}
}).$mount('#app');
Вы можете использовать $mount
или el:
со временем выполнения. Оба работают, но $mount
дает вам большую гибкость . И, конечно же, router
создается обычным образом
let routes = [
{ path: '/', component: MainComponent },
];
let router = new VueRouter({ routes });
И если вы все еще видите ошибку
[Vue warn]: You are using the runtime-only build of Vue
в консоли, то убедитесь, что вы никогда в вашем коде не используйте шаблоны со строками. Даже внутри ваших *. vue файлов, если вы попытаетесь сделать
const Foo = { template: '<div>foo</div>' };
, это не удастся. Вместо этого вы должны либо использовать теги <template>
, либо вы должны использовать createElement
. Удачи!