实现目标:
- 外部系统相关配置放在配置文件中
- 外部系统渲染入口放在主系统中,由主系统router控制外部系统的加载
- 外部系统加载过程展示loading
相关代码:
// config.js
export default {
collect: {
staticAddress: 'http://127.0.0.1:9303'
},
application: {
staticAddress: 'http://127.0.0.1:9304'
}
};
// router.js
import config from './config.js';
import DynamicComponent from './DynamicComponent.vue';
{
path: `${baseUrl}/collect`,
name: 'collect',
props:config.collect,
component: DynamicComponent
},
// DynamicComponent.vue
<template>
<keep-alive>
<iframe ref="dynamicIframe"
:src="staticAddress"
frameborder="0"
style="width:100%;height:100%;"
@load="frameLoaded"
/>
</keep-alive>
</template>
<script>
export default {
name: "DynamicComponent",
props: {
staticAddress: {
type: String,
required: true
}
},
beforeRouteEnter(to, from, next) {
next(vm => {
// element-ui loading效果
vm.$showViewLoading();
});
},
beforeDestroy() {
this.$off('load', this.frameLoaded);
},
methods: {
frameLoaded() {
this.$closeViewLoading();
}
}
};
</script>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。