main.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import store from './store'
  5. import "@/assets/style/reset.css"
  6. import "@/assets/style/my-reset.css"
  7. import UAParser from "@/libs/ua-parser.min.js"
  8. import clickOutside from "@/directives/v-click-outside.js"
  9. import mitt from "mitt"
  10. import ElementPlus from 'element-plus'
  11. import 'element-plus/dist/index.css'
  12. // import 'viewerjs/dist/viewer.css'
  13. // import VueViewer from 'v-viewer'
  14. console.log(`version: ${process.env.VUE_APP_VERSION}`)
  15. console.log(`Build time: ${process.env.VUE_APP_UPDATE_TIME}`)
  16. const app = createApp(App)
  17. // 挂载配置信息
  18. app.config.globalProperties.$config = config
  19. app.config.globalProperties.$env = process.env
  20. // 挂载消息发布订阅中心
  21. window.gMitt = mitt()
  22. app.config.globalProperties.$mitt = window.gMitt
  23. // 解析、挂载浏览器信息
  24. const uaParser = new UAParser()
  25. const uaInfo = uaParser.getResult()
  26. console.log('uaInfo: ', uaInfo)
  27. app.config.globalProperties.$uaInfo = uaInfo
  28. if (uaInfo.browser && uaInfo.browser.name === 'WeChat') {
  29. app.config.globalProperties.$isWeChat = true
  30. }
  31. if (uaInfo.browser && uaInfo.browser.name === 'Safari') {
  32. app.config.globalProperties.$isSafari = true
  33. }
  34. if (uaInfo.device.type === 'mobile') {
  35. app.config.globalProperties.$isMobile = true
  36. }
  37. // 处理resize和orientation change事件
  38. // window.addEventListener('resize', (e) => {
  39. // onResize(e)
  40. // })
  41. // 安卓端chrome、安卓端微信都是支持的。
  42. screen.orientation.addEventListener("change", (event) => {
  43. if (app.config.globalProperties.$isMobile) {
  44. location.reload()
  45. }
  46. })
  47. // // 禁用上下文菜单
  48. // document.oncontextmenu = function(e) {
  49. // e.preventDefault()
  50. // }
  51. // // safari里只能在交互行为的回调中成功地首次调用audio的play方法,所以需要一个全局的audio元素来播放随时可能需要自发播放的音频。
  52. // const audioNode = document.createElement("audio")
  53. // audioNode.id = 'global-audio'
  54. // audioNode.style.display = 'none'
  55. // audioNode.loop = true
  56. // document.body.appendChild(audioNode)
  57. app.use(store)
  58. .use(router)
  59. .use(clickOutside)
  60. .use(ElementPlus)
  61. // .use(VueViewer)
  62. // .component('HotSpot', HotSpot)
  63. .mount('#app')
  64. if (app.config.globalProperties.$isMobile) {
  65. document.body.classList.add('mobile')
  66. }