main.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. // 引入unocss css
  2. import '@/plugins/unocss'
  3. import '@/assets/css-vars.css'
  4. import '@/components/mt-edit/assets/css/custom_ani.css'
  5. import 'animate.css'
  6. import 'virtual:svg-icons-register'
  7. // 导入全局的svg图标
  8. import '@/plugins/svgIcon'
  9. import VueTianditu from 'vue-tianditu'
  10. // 初始化多语言
  11. import { setupI18n } from '@/plugins/vueI18n'
  12. // 引入状态管理
  13. import { setupStore } from '@/store'
  14. // 全局组件
  15. import { setupGlobCom } from '@/components'
  16. // 引入 element-plus
  17. import { setupElementPlus } from '@/plugins/elementPlus'
  18. // 引入 form-create
  19. import { setupFormCreate } from '@/plugins/formCreate'
  20. // 引入全局样式
  21. import '@/styles/index.scss'
  22. // 引入动画
  23. import '@/plugins/animate.css'
  24. // 路由
  25. import router, { setupRouter } from '@/router'
  26. // 指令
  27. import { setupAuth, setupMountedFocus } from '@/directives'
  28. import { createApp } from 'vue'
  29. import App from './App.vue'
  30. import './permission'
  31. import '@/plugins/tongji' // 百度统计
  32. import Logger from '@/utils/Logger'
  33. import mqttTool from '@/utils/mqttTool' // Mqtt工具
  34. import { setupAppVersionCheck } from '@/utils/appVersion'
  35. import { setupReloadOnChunkError } from '@/utils/reloadOnChunkError'
  36. import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患
  37. import DataVVue3 from '@kjgl77/datav-vue3'
  38. setupReloadOnChunkError(router)
  39. setupAppVersionCheck(router)
  40. // 创建实例
  41. const setupAll = async () => {
  42. console.time('app:init')
  43. const app = createApp(App)
  44. console.time('app:setupI18n')
  45. await setupI18n(app)
  46. console.timeEnd('app:setupI18n')
  47. console.time('app:setupStore')
  48. setupStore(app)
  49. console.timeEnd('app:setupStore')
  50. console.time('app:setupGlobCom')
  51. setupGlobCom(app)
  52. console.timeEnd('app:setupGlobCom')
  53. console.time('app:setupElementPlus')
  54. setupElementPlus(app)
  55. console.timeEnd('app:setupElementPlus')
  56. console.time('app:setupFormCreate')
  57. setupFormCreate(app)
  58. console.timeEnd('app:setupFormCreate')
  59. console.time('app:setupRouter')
  60. setupRouter(app)
  61. console.timeEnd('app:setupRouter')
  62. // directives 指令
  63. console.time('app:setupDirectives')
  64. setupAuth(app)
  65. setupMountedFocus(app)
  66. console.timeEnd('app:setupDirectives')
  67. console.time('router:isReady')
  68. await router.isReady()
  69. console.timeEnd('router:isReady')
  70. console.time('app:usePluginsAfterRouterReady')
  71. app.use(DataVVue3)
  72. app.use(DataVVue3)
  73. app.use(VueDOMPurifyHTML)
  74. app.config.globalProperties.$mqttTool = mqttTool
  75. app.use(VueTianditu, {
  76. v: '4.0',
  77. tk: import.meta.env.VITE_TK
  78. })
  79. console.timeEnd('app:usePluginsAfterRouterReady')
  80. console.time('app:mount')
  81. app.mount('#app')
  82. console.timeEnd('app:mount')
  83. console.timeEnd('app:init')
  84. }
  85. setupAll()
  86. Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE)