entry-client.js
2.44 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import Vue from 'vue';
import {
ROUTE_CHANGE,
} from 'store/yoho/types';
import {createApp} from './app';
import {createApi} from 'create-api';
import {Style, Toast, Dialog, ActionSheet} from 'cube-ui'; //eslint-disable-line
import Prompt from 'plugins/grass-prompt';
import bus from 'plugins/bus';
import {get} from 'lodash';
import yoho from 'common/yoho';
import sdk from 'common/sdk';
import links from 'utils/links';
import {initClient, getYohoState} from 'utils/init-client';
import 'statics/scss/common.scss';
import 'statics/scss/grass-prompt.scss';
import 'statics/font/iconfont.css';
const $app = document.getElementById('app');
const isDegrade = Boolean(!($app && $app.attributes['data-server-rendered']));
const context = get(window, '__INITIAL_STATE__.yoho.context');
const {app, router, store} = createApp(context, {yoho: getYohoState()});
if (window.__INITIAL_STATE__) {
store.replaceState(window.__INITIAL_STATE__);
}
window._router = get(store, 'state.yoho.context.route');
Vue.prop('yoho', yoho);
Vue.prop('sdk', sdk);
Vue.prop('links', links);
Vue.prop('auth', function() {
if (!get(this.$store, '$context.isLogin')) {
this.$sdk && this.$sdk.goLogin && this.$sdk.goLogin();
return false;
}
return true;
});
Vue.prop('bus', bus());
Vue.use(Prompt);
Vue.use(Toast);
Vue.use(Dialog);
Vue.use(ActionSheet);
Vue.prop('api', createApi(context, store));
initClient(store);
const trackPage = (path) => {
if (window._hmt) {
try {
window._hmt.push(['_trackPageview', path]);
} catch (error) {
console.error(error);
}
}
};
router.onReady(() => {
if (isDegrade) {
store.commit(ROUTE_CHANGE, {to: router.currentRoute});
}
router.beforeResolve((to, from, next) => {
store.commit('SET_STATUS_BAR_COLOR', {
color: get(to, 'meta.statusBarColor')
});
try {
trackPage(to.fullPath);
store.commit(ROUTE_CHANGE, {to, from});
store.dispatch('reportYas', {
params: {
appop: 'YB_H5_PAGE_OPEN_L',
param: {
F_URL: `${location.origin}${to.fullPath}`,
PAGE_URL: `${location.origin}${from.fullPath}`,
PAGE_NAME: from.name
}
}
});
return next();
} catch (e) {
store.dispatch('reportError', {error: e});
return next();
}
});
app.$mount(isDegrade ? '#degrade-app' : '#app');
});
router.onError(e => {
store.dispatch('reportError', {error: e});
router.push({name: 'error.500'});
});