53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
import './assets/main.css'
|
||
import { logEnvInfo } from './utils/env.js'
|
||
import { versionChecker } from './utils/versionChecker.js'
|
||
import { smartImage } from './directives/smartImage.js'
|
||
import { createPinia } from 'pinia'
|
||
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
|
||
import { createApp } from 'vue'
|
||
import i18n, { initI18n } from './locales/i18n'
|
||
|
||
import App from './App.vue'
|
||
import router from './router'
|
||
import { useLangStore } from '@/stores/lang' // 移动到顶部
|
||
|
||
// 初始化环境信息
|
||
logEnvInfo()
|
||
|
||
// 版本检查 - 不需要处理返回结果,因为会自动处理
|
||
versionChecker.checkVersion()
|
||
|
||
// 初始化权限系统
|
||
console.debug('🔐 Permission system initialized')
|
||
const pinia = createPinia()
|
||
pinia.use(piniaPluginPersistedstate) //将插件添加到 pinia 实例上
|
||
|
||
const app = createApp(App)
|
||
|
||
// 注册智能图片指令
|
||
app.directive('smart-img', smartImage)
|
||
|
||
app.use(router)
|
||
app.use(pinia)
|
||
|
||
// 然后初始化 i18n(此时 Pinia 已可用)
|
||
// 获取 langStore 并传递给 initI18n
|
||
const langStore = useLangStore() // 直接使用 import 的函数
|
||
initI18n(langStore)
|
||
|
||
// 最后使用 i18n
|
||
app.use(i18n)
|
||
|
||
app.mount('#app')
|
||
|
||
// 定期检查版本更新(每5分钟)
|
||
if (versionChecker.enableCheck) {
|
||
setInterval(async () => {
|
||
const hasUpdate = await versionChecker.checkServerVersion()
|
||
if (hasUpdate) {
|
||
// 自动处理更新,不需要用户交互
|
||
versionChecker.handleVersionUpdate()
|
||
}
|
||
}, 5 * 60 * 1000)
|
||
}
|