'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import {
  callAppHook
} from '../util'
 
import createApp from './create-app'
 
export {
  getApp,
  getCurrentPages
}
  from './create-app'
 
const extend = Object.assign
 
function createLaunchOptions () {
  return {
    path: '',
    query: {},
    scene: 1001,
    referrerInfo: {
      appId: '',
      extraData: {}
    }
  }
}
 
const enterOptions = createLaunchOptions()
const launchOptions = createLaunchOptions()
 
export function getLaunchOptions () {
  return launchOptions
}
 
export function getEnterOptions () {
  return enterOptions
}
 
export function initLaunchOptions ({
  path,
  query,
  referrerInfo
}) {
  extend(launchOptions, {
    path,
    query: query || {},
    referrerInfo: referrerInfo || {}
  })
  extend(enterOptions, launchOptions)
  return launchOptions
}
 
export function createAppMixin (Vue, routes, entryRoute) {
  return {
    created: function AppCreated () {
      createApp(Vue, this, routes)
      // TODO
      if (!entryRoute.meta.name) { // PageNotFound
        UniServiceJSBridge.emit('onPageNotFound', {
          path: entryRoute.path,
          query: entryRoute.query,
          isEntryPage: true
        })
        // TODO 跳转至缺省404页面
      }
    },
 
    beforeMount: function appBeforeMount () {
      // TODO 平台代码
      this.$el = document.getElementById('app')
    },
    mounted: function appMounted () {
      // 稍微靠后点,让 App 有机会在 mounted 事件前注册一些全局事件监听,如 UI 显示(showModal)
      initLaunchOptions({
        path: this.$route.meta && this.$route.meta.pagePath,
        query: this.$route.query
      })
      callAppHook(this, 'onLaunch', launchOptions)
      callAppHook(this, 'onShow', enterOptions)
    }
  }
}