From 83bad34ae404d07bac0688d75cd8ec011daa93a5 Mon Sep 17 00:00:00 2001 From: FairyEver <1711467488@qq.com> Date: Tue, 11 Jan 2022 17:05:08 +0800 Subject: [PATCH] refactor: Simplified code --- d2/menus/index.js | 55 +++++++------------ d2/utils/menu.js | 14 ++--- .../demo/component/d2-flex/index.vue | 8 --- .../dashboard/demo/layout/dashboard/index.vue | 8 --- 4 files changed, 27 insertions(+), 58 deletions(-) diff --git a/d2/menus/index.js b/d2/menus/index.js index 92d27443..c4437a3c 100644 --- a/d2/menus/index.js +++ b/d2/menus/index.js @@ -1,56 +1,47 @@ -import { Menu, routeMenus } from 'd2/utils/menu.js' +import { Menu, createRouteMenus } from 'd2/utils/menu.js' -export const dashboardIndexMenu = new Menu('控制台').url('/dashboard').icon('icon-park-outline:dashboard') +const menus = baseUrl => createRouteMenus({ + routeNameExp: new RegExp(`^dashboard-${baseUrl.replace(/\//g, '-')}`), + baseUrl +}) -export const indexMenu = new Menu('首页').url('/').icon('icon-park-outline:home') +export const dashboardIndexMenu = new Menu('控制台') + .url('/dashboard') + .icon('icon-park-outline:dashboard') + +export const indexMenu = new Menu('首页') + .url('/') + .icon('icon-park-outline:home') export const dashboardDemoComponentD2ScrollMenus = new Menu('滚动') .icon('icon-park-outline:move') .scope('/dashboard/demo/component/d2-scroll') - .add(routeMenus({ - match: /^dashboard-demo-component-d2-scroll/, - basePath: 'demo/component/d2-scroll' - })) + .add(menus('demo/component/d2-scroll')) export const dashboardDemoComponentD2SvgMenus = new Menu('SVG') .icon('icon-park-outline:pic-one') .scope('/dashboard/demo/component/d2-svg') - .add(routeMenus({ - match: /^dashboard-demo-component-d2-svg/, - basePath: 'demo/component/d2-svg' - })) + .add(menus('demo/component/d2-svg')) export const dashboardDemoComponentD2IconMenus = new Menu('图标') .icon('icon-park-outline:emotion-happy') .scope('/dashboard/demo/component/d2-icon') - .add(routeMenus({ - match: /^dashboard-demo-component-d2-icon/, - basePath: 'demo/component/d2-icon' - })) + .add(menus('demo/component/d2-icon')) export const dashboardDemoComponentD2BreakPointMenus = new Menu('断点') .icon('icon-park-outline:distribute-horizontally') .scope('/dashboard/demo/component/d2-break-point') - .add(routeMenus({ - match: /^dashboard-demo-component-d2-break-point/, - basePath: 'demo/component/d2-break-point' - })) + .add(menus('demo/component/d2-break-point')) export const dashboardDemoComponentD2FlexMenus = new Menu('Flex') .icon('icon-park-outline:carousel') .scope('/dashboard/demo/component/d2-flex') - .add(routeMenus({ - match: /^dashboard-demo-component-d2-flex/, - basePath: 'demo/component/d2-flex' - })) + .add(menus('demo/component/d2-flex')) export const dashboardDemoComponentSTableMenus = new Menu('Surely Vue') .icon('icon-park-outline:table-file') .scope('/dashboard/demo/component/s-table') - .add(routeMenus({ - match: /^dashboard-demo-component-s-table/, - basePath: 'demo/component/s-table' - })) + .add(menus('demo/component/s-table')) export const dashboardDemoComponentMenus = new Menu('组件') .icon('icon-park-outline:components') @@ -65,10 +56,7 @@ export const dashboardDemoComponentMenus = new Menu('组件') export const dashboardDemoLayoutDashboardMenus = new Menu('控制台布局') .icon('icon-park-outline:page') .scope('/dashboard/demo/layout/dashboard') - .add(routeMenus({ - match: /^dashboard-demo-layout-dashboard/, - basePath: 'demo/layout/dashboard' - })) + .add(menus('demo/layout/dashboard')) export const dashboardDemoLayoutMenus = new Menu('布局') .icon('icon-park-outline:page') @@ -78,7 +66,4 @@ export const dashboardDemoLayoutMenus = new Menu('布局') export const dashboardDocumentMenus = new Menu('文档') .icon('icon-park-outline:doc-detail') .scope('/dashboard/document') - .add(routeMenus({ - match: /^dashboard-document/, - basePath: 'document' - })) + .add(menus('document')) diff --git a/d2/utils/menu.js b/d2/utils/menu.js index 0da2318b..0c4cb0e2 100644 --- a/d2/utils/menu.js +++ b/d2/utils/menu.js @@ -111,18 +111,18 @@ function filterRoutes (rule) { return routesFlat.filter(route => rule.test(route.name)) } -function createRouteMenu (route, basePath) { - const url = route.path.replace(RegExp(`^${basePath}`), '') - const title = get(route.meta, 'd2admin.menu.title', url || '/') +function createRouteMenu (route, baseUrl) { + const url = route.path.replace(new RegExp(`^${baseUrl}`), '') + const title = get(route.meta, 'd2admin.menu.title', url || '首页') if (!url) { return new Menu(title).index() } return new Menu(title).url(url) } -export function routeMenus ({ - match = /.+/, - basePath = '' +export function createRouteMenus ({ + routeNameExp = /.+/, + baseUrl = '' } = {}) { - return filterRoutes(match).map(route => createRouteMenu(route, basePath)) + return filterRoutes(routeNameExp).map(route => createRouteMenu(route, baseUrl)) } diff --git a/d2/views/dashboard/demo/component/d2-flex/index.vue b/d2/views/dashboard/demo/component/d2-flex/index.vue index 97898d18..4ba1fbf3 100644 --- a/d2/views/dashboard/demo/component/d2-flex/index.vue +++ b/d2/views/dashboard/demo/component/d2-flex/index.vue @@ -1,11 +1,3 @@ - -{ - "meta": { - "d2admin.menu.title": "首页" - } -} - - diff --git a/d2/views/dashboard/demo/layout/dashboard/index.vue b/d2/views/dashboard/demo/layout/dashboard/index.vue index 97898d18..4ba1fbf3 100644 --- a/d2/views/dashboard/demo/layout/dashboard/index.vue +++ b/d2/views/dashboard/demo/layout/dashboard/index.vue @@ -1,11 +1,3 @@ - -{ - "meta": { - "d2admin.menu.title": "首页" - } -} - -