import { createApp } from 'vue'; import { WebviewWindow } from '@tauri-apps/api/webviewWindow'; import App from './App.vue'; import pinia from '@/pinia/store'; import { author, copyright } from '../package.json'; import { useRouterGuard } from './router/router-guard'; import dayjs from 'dayjs'; import { useThrottleFn } from '@vueuse/core'; import router from './router/router'; import ErrorHandler from '@/utils/error-handler'; import 'dayjs/locale/zh-cn'; import '@/styles/main/root.scss'; import '@/styles/main/dom.scss'; import '@/styles/main/button.scss'; // 统一按钮样式规范 import '@/styles/main/element-plus.scss'; import '@/styles/main/global.scss'; import '@/styles/main/font.css'; import '@/styles/main/transition.scss'; import { isTauri } from '@tauri-apps/api/core'; const IS_TAURI = isTauri(); // 设置dayjs的默认语言为中文 dayjs.locale('zh-cn'); // 在控制台输出作者和版权信息,使用CSS样式美化输出效果 console.log( ` %c ${author.email} %c ${copyright} `, 'color: #fadfa3; background: #030307; padding:5px 0;', 'color: #030307;background: #fadfa3; padding:5px 0;' ); // 创建Vue应用实例 const app = createApp(App); // 注册路由和状态管理 app.use(router).use(pinia); // 初始化全局错误处理器 IS_TAURI && ErrorHandler.getInstance().init(); // 挂载应用到DOM元素#app上 app.mount('#app'); // 注册路由前置守卫 useRouterGuard(); /** * 全局注册节流函数 * 用于防止函数被频繁调用,例如按钮点击事件 * 节流间隔为500毫秒 */ app.config.globalProperties.$throttle = useThrottleFn((fun: (...args: any[]) => void, ...args: any[]) => { fun(...args); }, 500); // 全局注册dayjs,方便在模板中直接使用 app.config.globalProperties.$dayjs = dayjs; setTimeout(() => { !import.meta.env.MODE && WebviewWindow.getCurrent().setFocus(); }, 10);