У меня есть файл app.vue
<template>
<h1>Hello App!</h1>
<p>
<router-link to="/foo">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
</p>
<router-view></router-view>
</template>
<script>
import VueRouter from "vue-router";
export default {
name: 'app'
}
</script>
И запускаемый файл main.js
import Vue from 'vue'
import App from './App.vue'
import VueRouter from "vue-router";
Vue.use(VueRouter);
const Foo = {template: '<div>foo</div>'}
const Bar = {template: '<div>bar</div>'}
const routes = [
{path: '/foo', component: Foo},
{path: '/bar', component: Bar}
]
const router = new VueRouter({
routes // сокращение от `routes: routes`
})
const app = new Vue({
router,
render: h => h(App)
}).$mount('#app')
Приложение рендерится, ошибок не выводит, но ссылок router-link нету. Не могу понять в чём дело.
Для сборки использую rollup, не знаю имеет ли это значение.
Я во Vue.js новичок, хочу понять как сделать проект с .vue файлами, роутингом, и основным шаблоном.
Решилось добавлением div
<template>
<div> /* добавил */
<h1>Hello App!</h1>
<p>
<!-- используйте компонент router-link для создания ссылок -->
<!-- входной параметр `to` определяет путь для перехода -->
<!-- `<router-link>` по умолчанию преобразуется в тег `<a>` -->
<router-link to="/foo">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
</p>
<!-- отображение компонента, для которого совпал путь -->
<router-view/>
</div>
</template>
Но зачем этот div нужен, не понимаю?
Решилось добавлением div. Но зачем этот div нужен, не понимаю?
В Vue html-шаблон любого компонента не может содержать более одного элемента на верхнем уровне. Сделано это с целью упрощения реализации инжектирования кода компонента.
Вот комментарий разработчика Vue в issue на GitHub'е, в которой запрашивается возможность иметь несколько элементов верхнего уровня в одном компоненте:
While that's something useful in its own right, currently it requires non-trivial changes to the vdom implementation to support it. This is something that falls within "obviously nice to have but not an area of focus for now". We'll revisit this when we are working on substantial improvements to the vdom in the future.
Эта возможность кажется полезной, но чтобы добавить её придётся сделать нетривиальные изменения в текущей реализации виртуального DOM. То есть очевидно было бы здорово иметь её, но это не то, на чём сейчас стоит сосредоточиться. Возможно что-то изменится в следующих релизах.
Насчёт этой части:
Я во Vue.js новичок, хочу понять как сделать проект с .vue файлами, роутингом, и основным шаблоном.
Имхо, наиболее удобный способ — создавать проект, используя vue-cli и один из готовых шаблонов, например webpack.
Не знаю, связанно ли это с webpack, но тогда ошибка наличия нескольких компонент верхнего уровня будет обнаруживаться на этапе сборки.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости