| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import { createApp, watchEffect } from 'vue';
- import { $t } from '@vben/locales';
- import { preferences } from '@vben/preferences';
- import '@vben/styles';
- import '@vben/styles/antd';
- import { useTitle } from '@vueuse/core';
- import initAdapter from './adapter/setup';
- import App from './App.vue';
- import initDirective from './directive/setup';
- import initI18n from './locales/setup';
- import initRouter from './router';
- import initStores from './stores';
- export default async function bootstrap(space: string) {
- const app = createApp(App);
- // 国际化 i18n 配置
- await initI18n(app);
- // 适配器初始化(组件、表单组件)
- await initAdapter(app);
- // 注册指令
- await initDirective(app);
- // 配置 pinia-tore
- await initStores(app, { namespace: space });
- // 配置路由及守卫
- const router = await initRouter(app);
- // 初始化 tippy
- const { initTippy } = await import('@vben/common-ui/es/tippy');
- initTippy(app);
- // 配置Motion插件
- const { MotionPlugin } = await import('@vben/plugins/motion');
- app.use(MotionPlugin);
- // 动态更新标题
- 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');
- }
|