main.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { createApp } from 'vue'
  2. import { createPinia } from 'pinia'
  3. import { useLangStore } from '@/pinia/langStore'
  4. import ElementPlus from 'element-plus'
  5. import 'element-plus/dist/index.css'
  6. import router from './router'
  7. import App from './App.vue'
  8. import i18n from './i18n'
  9. // 导入自定义消息工具
  10. import message from './utils/message'
  11. // 导入全局样式(Tailwind CSS)
  12. import './styles/tailwind.css'
  13. const app = createApp(App)
  14. const pinia = createPinia()
  15. app.use(pinia)
  16. const langStore = useLangStore()
  17. langStore.initializeLang()
  18. // 注册 i18n
  19. app.use(i18n)
  20. // 按需注册 Element Plus 图标(仅注册实际使用的图标,减少包体积)
  21. // 如需全量注册,取消注释以下代码
  22. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  23. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  24. app.component(key, component)
  25. }
  26. // 全局注册 Breadcrumb 组件
  27. import Breadcrumb from '@/components/Breadcrumb.vue'
  28. app.component('Breadcrumb', Breadcrumb)
  29. app.use(router)
  30. app.use(ElementPlus)
  31. // 全局注册消息工具
  32. app.config.globalProperties.$message = message
  33. app.mount('#app')
  34. // 动态加载 PayPal SDK(从环境变量读取 client-id)
  35. // const paypalClientId = import.meta.env.VITE_PAYPAL_CLIENT_ID
  36. // if (paypalClientId) {
  37. // const script = document.createElement('script')
  38. // script.src = `https://www.paypal.com/sdk/js?client-id=${paypalClientId}&currency=USD`
  39. // script.defer = true
  40. // document.head.appendChild(script)
  41. // }
  42. // 移除初始加载动画
  43. if (window.__removeLoading) {
  44. window.__removeLoading()
  45. }