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(Иван Демидов))