diff --git a/apps/web-antd/src/bootstrap.ts b/apps/web-antd/src/bootstrap.ts index f88b41b12..963d1c7f7 100644 --- a/apps/web-antd/src/bootstrap.ts +++ b/apps/web-antd/src/bootstrap.ts @@ -1,11 +1,14 @@ -import { createApp } from 'vue'; +import { createApp, watchEffect } from 'vue'; import { registerAccessDirective } from '@vben/access'; +import { preferences } from '@vben/preferences'; import { initStores } from '@vben/stores'; import '@vben/styles'; import '@vben/styles/antd'; -import { setupI18n } from '#/locales'; +import { useTitle } from '@vueuse/core'; + +import { $t, setupI18n } from '#/locales'; import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; @@ -29,6 +32,16 @@ async function bootstrap(namespace: string) { // 配置路由及路由守卫 app.use(router); + // 动态更新标题 + watchEffect(() => { + if (preferences.app.dynamicTitle) { + const routeTitle = router.currentRoute.value.meta?.title; + const pageTitle = + (routeTitle ? `${$t(routeTitle)} - ` : '') + preferences.app.name; + useTitle(pageTitle); + } + }); + app.mount('#app'); } diff --git a/apps/web-antd/src/router/guard.ts b/apps/web-antd/src/router/guard.ts index 52edfe015..fce5a892c 100644 --- a/apps/web-antd/src/router/guard.ts +++ b/apps/web-antd/src/router/guard.ts @@ -5,9 +5,6 @@ import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; import { accessRoutes, coreRouteNames } from '#/router/routes'; import { useAuthStore } from '#/store'; @@ -40,13 +37,6 @@ function setupCommonGuard(router: Router) { if (preferences.transition.progress) { stopProgress(); } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } }); } diff --git a/apps/web-ele/src/bootstrap.ts b/apps/web-ele/src/bootstrap.ts index 7311d665c..de1884730 100644 --- a/apps/web-ele/src/bootstrap.ts +++ b/apps/web-ele/src/bootstrap.ts @@ -1,11 +1,14 @@ -import { createApp } from 'vue'; +import { createApp, watchEffect } from 'vue'; import { registerAccessDirective } from '@vben/access'; +import { preferences } from '@vben/preferences'; import { initStores } from '@vben/stores'; import '@vben/styles'; import '@vben/styles/ele'; -import { setupI18n } from '#/locales'; +import { useTitle } from '@vueuse/core'; + +import { $t, setupI18n } from '#/locales'; import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; @@ -28,6 +31,16 @@ async function bootstrap(namespace: string) { // 配置路由及路由守卫 app.use(router); + // 动态更新标题 + watchEffect(() => { + if (preferences.app.dynamicTitle) { + const routeTitle = router.currentRoute.value.meta?.title; + const pageTitle = + (routeTitle ? `${$t(routeTitle)} - ` : '') + preferences.app.name; + useTitle(pageTitle); + } + }); + app.mount('#app'); } diff --git a/apps/web-ele/src/router/guard.ts b/apps/web-ele/src/router/guard.ts index 52edfe015..fce5a892c 100644 --- a/apps/web-ele/src/router/guard.ts +++ b/apps/web-ele/src/router/guard.ts @@ -5,9 +5,6 @@ import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; import { accessRoutes, coreRouteNames } from '#/router/routes'; import { useAuthStore } from '#/store'; @@ -40,13 +37,6 @@ function setupCommonGuard(router: Router) { if (preferences.transition.progress) { stopProgress(); } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } }); } diff --git a/apps/web-naive/src/bootstrap.ts b/apps/web-naive/src/bootstrap.ts index 13ab95cba..fc7f961d6 100644 --- a/apps/web-naive/src/bootstrap.ts +++ b/apps/web-naive/src/bootstrap.ts @@ -1,10 +1,13 @@ -import { createApp } from 'vue'; +import { createApp, watchEffect } from 'vue'; import { registerAccessDirective } from '@vben/access'; +import { preferences } from '@vben/preferences'; import { initStores } from '@vben/stores'; import '@vben/styles'; -import { setupI18n } from '#/locales'; +import { useTitle } from '@vueuse/core'; + +import { $t, setupI18n } from '#/locales'; import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; @@ -27,6 +30,16 @@ async function bootstrap(namespace: string) { // 配置路由及路由守卫 app.use(router); + // 动态更新标题 + watchEffect(() => { + if (preferences.app.dynamicTitle) { + const routeTitle = router.currentRoute.value.meta?.title; + const pageTitle = + (routeTitle ? `${$t(routeTitle)} - ` : '') + preferences.app.name; + useTitle(pageTitle); + } + }); + app.mount('#app'); } diff --git a/apps/web-naive/src/router/guard.ts b/apps/web-naive/src/router/guard.ts index d12003c06..c95d994ec 100644 --- a/apps/web-naive/src/router/guard.ts +++ b/apps/web-naive/src/router/guard.ts @@ -5,9 +5,6 @@ import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; import { accessRoutes, coreRouteNames } from '#/router/routes'; import { useAuthStore } from '#/store'; @@ -40,13 +37,6 @@ function setupCommonGuard(router: Router) { if (preferences.transition.progress) { stopProgress(); } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } }); } diff --git a/playground/src/bootstrap.ts b/playground/src/bootstrap.ts index b522068c0..09b8cfa8b 100644 --- a/playground/src/bootstrap.ts +++ b/playground/src/bootstrap.ts @@ -1,17 +1,19 @@ -import { createApp } from 'vue'; +import { createApp, watchEffect } from 'vue'; import { registerAccessDirective } from '@vben/access'; +import { preferences } from '@vben/preferences'; import { initStores } from '@vben/stores'; import '@vben/styles'; import '@vben/styles/antd'; import { VueQueryPlugin } from '@tanstack/vue-query'; +import { useTitle } from '@vueuse/core'; -import { setupI18n } from '#/locales'; +import { $t, setupI18n } from '#/locales'; +import { router } from '#/router'; import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; -import { router } from './router'; async function bootstrap(namespace: string) { // 初始化组件适配器 @@ -34,6 +36,16 @@ async function bootstrap(namespace: string) { // 配置@tanstack/vue-query app.use(VueQueryPlugin); + // 动态更新标题 + watchEffect(() => { + if (preferences.app.dynamicTitle) { + const routeTitle = router.currentRoute.value.meta?.title; + const pageTitle = + (routeTitle ? `${$t(routeTitle)} - ` : '') + preferences.app.name; + useTitle(pageTitle); + } + }); + app.mount('#app'); } diff --git a/playground/src/router/guard.ts b/playground/src/router/guard.ts index ff7aa2bc5..bddb28db8 100644 --- a/playground/src/router/guard.ts +++ b/playground/src/router/guard.ts @@ -5,9 +5,6 @@ import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; -import { useTitle } from '@vueuse/core'; - -import { $t } from '#/locales'; import { accessRoutes, coreRouteNames } from '#/router/routes'; import { useAuthStore } from '#/store'; @@ -39,13 +36,6 @@ function setupCommonGuard(router: Router) { if (preferences.transition.progress) { stopProgress(); } - - // 动态修改标题 - if (preferences.app.dynamicTitle) { - const { title } = to.meta; - // useTitle(`${$t(title)} - ${preferences.app.name}`); - useTitle(`${$t(title)} - ${preferences.app.name}`); - } }); }