launcher.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import App from '@/App'
  2. import store from '@/store'
  3. import appSettings from '@/core/config/app-settings'
  4. import mpShareMixin from '@/platform/mp-share'
  5. import Base64Codec from '@/core/infra/codec-base64'
  6. import { registerHttpInterceptors, createHttpFacade } from '@/core/http'
  7. import * as businessApi from '@/core/api'
  8. import { buildRuntimeToolkit } from '@/core/kit/runtime-toolkit'
  9. import { installGlobalShortcuts } from '@/features/global-shortcuts'
  10. import { createAppI18n } from './i18n-factory'
  11. // #ifdef H5
  12. import { runningInsideWeChat } from '@/platform/h5-wechat'
  13. // #endif
  14. function attachSharedRuntime(host, i18n) {
  15. const sink = host.prototype || host
  16. sink.$store = store
  17. sink.$base64 = new Base64Codec()
  18. // #ifdef H5
  19. sink.$jssdk = { isWechat: runningInsideWeChat }
  20. // #endif
  21. sink.$appKit = buildRuntimeToolkit(i18n)
  22. sink.$http = createHttpFacade()
  23. sink.$api = businessApi
  24. installGlobalShortcuts(sink)
  25. registerHttpInterceptors(i18n)
  26. }
  27. // #ifndef VUE3
  28. import Vue from 'vue'
  29. export function bootstrapVue2App(RootApp = App) {
  30. const i18n = createAppI18n(Vue)
  31. Vue.mixin(mpShareMixin)
  32. Vue.config.productionTip = !!appSettings.debug
  33. attachSharedRuntime(Vue, i18n)
  34. RootApp.mpType = 'app'
  35. return new Vue({ i18n, store, ...RootApp }).$mount()
  36. }
  37. // #endif
  38. // #ifdef VUE3
  39. import { createSSRApp } from 'vue'
  40. export function bootstrapVue3App(RootApp = App) {
  41. const i18n = createAppI18n()
  42. const app = createSSRApp(RootApp)
  43. app.use(store)
  44. app.use(i18n)
  45. app.mixin(mpShareMixin)
  46. attachSharedRuntime(app.config.globalProperties, i18n)
  47. return { app }
  48. }
  49. // #endif