ebc

main.js 2.1KB

    /** * @file 本文件实现了应用初始化逻辑 * @author PRD UX R&D Dept. */ // 引入第三方库 import 'babel-polyfill' import Vue from 'vue' import { sync } from 'vuex-router-sync' // 引入aid库 import aid from 'aid-desktop' import createStore from './store' import frame from './frame.vue' import i18nManager from './i18n' import createRouter from './router' import PKGJson from '../package.json' import '@/styles/index.scss' // global css import VideoPlayer from 'vue-video-player' require('video.js/dist/video-js.css') require('vue-video-player/src/custom-theme.css') Vue.use(VideoPlayer) // 这个是为了兼容 m3u8 // const hls = require('videojs-contrib-hls') // Vue.use(hls) import axios from 'axios' axios.defaults.withCredentials = true // 安装组件库插件 Vue.use(aid, { local: i18nManager.language, i18n: (path, options) => { let value = i18nManager.i18n.t(path, options) if (value !== null && value !== undefined) return value return '' }, all: true }) let router = null let store = null let app = null function createApp (props = {}) { const { container } = props router = createRouter() store = createStore() // 将路由状态同步到store中 sync(store, router) store.dispatch('permission/generateRoutes', 'user') // webpack热更新支持 if (module.hot) { module.hot.accept() } app = new Vue({ store, router, i18n: i18nManager.i18n, render (h) { return h(frame) } }).$mount(container ? container.querySelector('#app') : '#app') app.$Message.config({ closable: true, duration: 0 }) } if (!window.__POWERED_BY_QIANKUN__) { createApp() } export function bootstrap () { return Promise.resolve().then(() => { console.log(`${PKGJson.name} 应用已启动`) }) } export async function mount (props) { return Promise.resolve().then(() => { console.log(`${PKGJson.name} 应用已挂载`) createApp(props) }) } export async function unmount () { return Promise.resolve().then(() => { app.$destroy() app.$el.innerHTML = '' app = null store = null router = null }) }