почему мне нужно добавлять .default после инструкции import

#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. обычно я бы поступил так, как вы показали здесь. Но мне было любопытно узнать, как работает другой способ, поскольку я где-то видел, как люди делают это подобным образом. Было бы неплохо узнать что-то новое.