You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.2 KiB
56 lines
1.2 KiB
import Vue from 'vue' |
|
import App from './App.vue' |
|
import VueRouter from 'vue-router'; |
|
|
|
Vue.config.productionTip = false |
|
let router = null; |
|
let instance = null; |
|
|
|
function render(props = {}) { |
|
const { container } = props; |
|
router = new VueRouter({ |
|
base: window.__POWERED_BY_QIANKUN__ ? '/vue' : '/', |
|
mode: 'history', |
|
}); |
|
|
|
instance = new Vue({ |
|
router, |
|
render: h => h(App), |
|
}).$mount(container ? container.querySelector('#app') : '#app'); |
|
} |
|
|
|
if (!window.__POWERED_BY_QIANKUN__) { |
|
render(); |
|
} |
|
|
|
function storeTest(props) { |
|
props.onGlobalStateChange && |
|
props.onGlobalStateChange( |
|
(value, prev) => console.log(`[onGlobalStateChange - ${props.name}]:`, value, prev), |
|
true, |
|
); |
|
props.setGlobalState && |
|
props.setGlobalState({ |
|
ignore: props.name, |
|
user: { |
|
name: props.name, |
|
}, |
|
}); |
|
} |
|
|
|
export async function bootstrap() { |
|
console.log('[vue] vue app bootstraped'); |
|
} |
|
|
|
export async function mount(props) { |
|
console.log('[vue] props from main framework', props); |
|
storeTest(props); |
|
render(props); |
|
} |
|
|
|
export async function unmount() { |
|
instance.$destroy(); |
|
instance.$el.innerHTML = ''; |
|
instance = null; |
|
router = null; |
|
}
|
|
|