July 29, 2020
"Хлебные крошки" на VueJS (vue-2-breadcrumbs)
Vue-2-breadcrumbs построены на базе официального плагина vue-router для создания простых "хлебных крошек"
Демо: GitHub
Поддержка
- Поддержка SSR
- Установка родительского маршрута без необходимости фактически вложить его в дочерний массив
- Кастомизированный шаблон
- Динамические "хлебные крошки"
- Динамический родитель
- Динамический заголовок
- Сокращенный заголовок (
breadcrumb: 'Заголовок страницы') - Суб-роутинг
Установка
npm install vue-2-breadcrumbs
Примечание: Этот компонент совестим с NodeJS v10+
Использование
import Vue from 'vue'; import VueBreadcrumbs from 'vue-2-breadcrumbs'; import App from './App.vue'; Vue.use(VueBreadcrumbs);
Примечание: После этого компонент <Breadcrumbs/> будет в вашем распоряженииМета во Vue Router
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const router = new VueRouter({
routes: [
{
path: '/',
name: 'Главная',
component: { template: '<h2>Главная</h2>' },
meta: {
breadcrumb: 'Главная'
}
},
{
path: '/params',
name: 'Параметры',
component: { template: '<h2>Параметры</h2>' },
meta: {
breadcrumb: routeParams => `route params id: ${routeParams.id}`
}
},
{
path: '/context',
name: 'Контекст',
component: { template: '<h2>Контекст</h2>' },
meta: {
breadcrumb() {
const { name } = this.$route;
return `Имя "${name}" рута контекста`;
}
}
},
{
path: '/parent',
component: { template: '<router-view/>' },
meta: {
breadcrumb: {
label: 'Родитель для параметров',
parent: 'Параметры'
}
},
{
name: 'dynamic-parent',
path: '/dynamic-parent',
component: { template: '<h2>Динамический родитель</h2>' },
meta: {
breadcrumb() {
const { name } = this.$route;
return {
label: name,
parent: 'settings'
};
}
}
}
]
});
Опции
Объект options также может быть передан в плагин для указания вашего собственного шаблона и методов рендеринга при желании. Например:
import Vue from 'vue';
import VueBreadcrumbs from 'vue-2-breadcrumbs';
Vue.use(VueBreadcrumbs, {
template:
' <nav v-if="$breadcrumbs.length" aria-label="breadcrumb">\n' +
' <ol class="breadcrumb">\n' +
' <li v-for="(crumb, key) in $breadcrumbs" v-if="crumb.meta.breadcrumb" :key="key" class="breadcrumb-item active" aria-current="page">\n' +
' <router-link :to="{ path: getPath(crumb) }">{{ getBreadcrumb(crumb.meta.breadcrumb) }}</router-link>' +
' </li>\n' +
' </ol>\n' +
' </nav>'
});
_________________________
Оригинал на Github (автор компонента - Scrum(Иван Демидов))