#templates #vue.js #electron #vue-component #vue-router
#шаблоны #vue.js #электрон #vue-компонент #vue-маршрутизатор
Вопрос:
Я пытаюсь заставить работать шаблон electron-vue. После настройки проекта все работает, но когда я создаю новый файл .vue (TopMenu.vue) Я получаю:
vue.common.js?4eb4:2569 [Vue warn]: Unknown custom element: <topmenu> -
did you register the component correctly? For recursive components, make
sure to provide the "name" option. (found in component <landing-page>)
Я использую точный синтаксис, как в оригинальных файлах .vue, которые поставляются с шаблоном:
LandingPageVue.vue:
<style scoped>
img {
margin-top: -25px;
width: 450px;
}
</style>
<template>
<div>
<!-- <img src="./LandingPageView/assets/logo.png" alt="electron-vue"> -->
<h1>Welcome.</h1>
<topmenu></topmenu>
<current-page></current-page>
<versions></versions>
<links></links>
<div class="container">
</div>
</template>
<script>
import TopMenu from './LandingPageView/TopMenu'
import CurrentPage from './LandingPageView/CurrentPage'
import Links from './LandingPageView/Links'
import Versions from './LandingPageView/Versions'
export default {
components: {
TopMenu,
CurrentPage,
Links,
Versions
},
name: 'landing-page'
}
</script>
TopMenu.vue (мой файл):
<template>
<p>
TOPMENU
</p>
</template>
Кстати, как <current-page></current-page>
работает хак (обратите внимание на тире «-«), если ниже он объявлен без?
Ответ №1:
Это не работает, потому что вы ничего не экспортируете в свой файл vue.
Попробуйте это в вашем файле TopMenu.vue:
<template>
<p>
TOPMENU
</p>
</template>
<script>
export default {
}
</script>
Также измените html <topmenu></topmenu>
на <top-menu></top-menu>
Что касается вашего второго вопроса, HTML не чувствителен к регистру, поэтому ваши компоненты заголовка не будут совпадать с тегами html. Итак, Vue переводит ваши компоненты заголовка в «регистр тире». Из самой документации есть объяснение, почему:
Обратите внимание, что Vue не применяет правила W3C для имен пользовательских тегов (все в нижнем регистре, должны содержать дефис), хотя следование этому соглашению считается хорошей практикой.
Вы можете прочитать больше из документации
Комментарии:
1. добавлен, перезапущен, ошибка по-прежнему сохраняется. Я проверил currentPage.vue, он не содержит указанного скрипта, и это работает.
2. попробуйте изменить свой html
<topmenu></topmenu>
на<top-menu></top-menu>
3. Боже, это работает! Я часами искал в документах …:(( Но где это упоминается (эти соглашения)?
4. перейдите по ссылке в моем отредактированном ответе. Я также снова отредактирую правильный ответ. Рад, что смог помочь!
5. Я только сейчас увидел изменения, спасибо! Ты мой спаситель! 🙂