Компоненты в vue
могут быть хитрыми. Если вы еще этого не сделали, я настоятельно рекомендую прочитать документацию на веб-сайте vue.js о том, как работает регистрация компонентов, в частности, так как tony19 упоминает о глобальной и локальной регистрации . Пример кода, который вы показываете на своем скриншоте, на самом деле делает пару вещей. С одной стороны, это делает компоненты доступными локально и только локально (как в этом файле .vue) для использования. Кроме того, он делает его доступным для шаблона как key
, предоставленный вами в объекте components
, в данном случае app-user-detail
и app-user-edit
вместо user-detail
и user-edit
.
Важно отметить, что import
на самом деле не требуется для функционирования регистрации этого компонента. Вы могли бы иметь несколько компонентов, определенных в одном файле. Клавиша components
позволяет определить, что использует этот компонент. Так что import
не требуется, поэтому vue
требует ключ components
, чтобы понять, что вы используете в качестве компонента, и что такое просто другой код.
Наконец, как уже упоминалось в некоторых других ответах, клавиша components
на самом деле не является экспортом. Для подписи компонента vue
по умолчанию требуется export
, но это , а не , при котором экспортируются компоненты, перечисленные под ключом components
. Что он делает, так это позволяет vue
строить сверху вниз. В зависимости от того, как выглядит остальная часть вашего приложения, вы можете использовать отдельные файловые компоненты или нет. В любом случае, vue
начнется с верхнего уровня vue instance
и будет проходить вниз через компоненты, за исключением глобальной регистрации, ни один компонент верхнего уровня не знает, какие компоненты используются ниже он .
Это означает, что vue
отображает все правильно, каждый компонент должен содержать ссылку на дополнительные компоненты, которые он использует. Эта ссылка экспортируется как часть компонента более высокого уровня (в вашем случае User.vue
), но не самого компонента (UserDetail.vue
).
Так что может показаться, что vue
требуется второй экспорт после импорта, но на самом деле он делает что-то еще, чтобы позволить корневому экземпляру vue отобразить ваш компонент.
Кроме того, справочная документация по этому вопросу действительно неплохая, если вы еще этого не сделали, взгляните на разделы, которые я привел выше. Существует дополнительный раздел, посвященный системам импорта / экспорта модулей, который, по-видимому, имеет большое отношение к тому, о чем вы просите, вы можете найти здесь: Module-systems .