#vuejs2 #vue-router
#vuejs2 #vue-маршрутизатор
Вопрос:
Я следую пошаговой серии vue2 от laracast. В уроке 26, в котором описываются основы vue router, файл маршрутизатора определяется следующим образом:
//file: routes.js
import VueRouter from 'vue-router';
import Home from './Views/Home.vue';
import About from './Views/About.vue';
const routes = [
{
path: '/',
component: require('./Views/Home.vue')
},
]
export default new VueRouter ({
routes
});
//file: Home.vue
<template>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Home Page</div>
<div class="card-body">
I'm an example component.
</div>
</div>
</div>
</div>
</div>
</template>
Я получал сообщение об ошибке, которое Failed to mount component: template or render function not defined.
После некоторого поиска в Google было найдено решение, которое мне нужно изменить свойство компонента следующим образом:
component: require('./Views/About.vue').default
То есть мне нужно добавить .default.
Я хотел бы, чтобы кто-нибудь объяснил, почему, и, возможно, перенаправил меня на какой-нибудь ресурс для получения более подробной информации.
Мог ли я сделать это каким-либо другим способом, например, добавить инструкцию export в мой домашний файл.vue? Если да, то какой был бы правильный синтаксис.
Спасибо
Комментарии:
1. Я подумал,
component: () => import('./Views/About.vue')
что он более популярен в использовании.2. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
3. Можете ли вы указать, какая именно строка выдает ошибку? И какой файл — маршрутизатор или приложение?
4. @Skipper: строка, которая выдает ошибку, является
component: require('./Views/Home.vue')
, которая находится в файле router.js Как я уже сказал, добавление.default
к этой строке решает проблему.
Ответ №1:
Честно говоря, я не знаю, почему вы сделали бы это вместо четкого и работающего способа:
import VueRouter from 'vue-router';
import Home from './Views/Home.vue';
import About from './Views/About.vue';
const routes = [
{
path: '/',
component: Home
},
]
export default new VueRouter ({
routes
});
Комментарии:
1. обычно я бы поступил так, как вы показали здесь. Но мне было любопытно узнать, как работает другой способ, поскольку я где-то видел, как люди делают это подобным образом. Было бы неплохо узнать что-то новое.