新增 StoragePaths 模块,将数据库、设置、frp 版本等业务数据统一保存在应用实际安装位置,避免不同实例或版本间数据混淆。新增 Preferences 模块管理安装目录内的持久化设置,重构数据库初始化逻辑,修改 Frpc 运行目录、frp 版本存储路径,新增数据目录锁机制防止多进程冲突,同时更新文档说明数据目录规则与平台差异。
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import { createApp } from "vue"
|
|
import { createPinia } from "pinia"
|
|
import App from "./App.vue"
|
|
import "@/assets/main.css"
|
|
// 引入 Ant Design Vue 组件库
|
|
import Antd from "ant-design-vue"
|
|
import "ant-design-vue/dist/reset.css"
|
|
// 引入路由
|
|
import router from "@/router/router"
|
|
// 引入国际化
|
|
import i18n from "@/i18n"
|
|
import { detectPlatform } from "@/composables/usePlatform"
|
|
import { nextTick } from "vue"
|
|
import { useOnboardingStore } from "@/stores/onboarding"
|
|
|
|
/*
|
|
* macOS 的无边框窗口系统不会自动裁圆角,需要配合 transparent 窗口,
|
|
* 由 #app 自身裁出 8px 圆角(见 assets/main.css)。这里在挂载前打上平台标记,
|
|
* 避免首帧出现方角闪烁。
|
|
*/
|
|
if (detectPlatform() === "macos") {
|
|
document.documentElement.classList.add("is-macos")
|
|
}
|
|
|
|
const app = createApp(App)
|
|
app.use(createPinia())
|
|
app.use(Antd)
|
|
app.use(i18n)
|
|
app.use(router)
|
|
// 路由懒加载完成后再挂载,避免启动画面移除后出现空白内容区。
|
|
async function mountApp() {
|
|
await router.isReady()
|
|
app.mount("#app")
|
|
await nextTick()
|
|
// 让浏览器先绘制完整布局,再揭开启动画面并开始首次引导。
|
|
requestAnimationFrame(() => {
|
|
requestAnimationFrame(() => {
|
|
document.getElementById("startup-loader")?.remove()
|
|
useOnboardingStore().ready = true
|
|
})
|
|
})
|
|
}
|
|
|
|
void mountApp()
|