dootask/resources/assets/js/microapp.js

51 lines
1.4 KiB
JavaScript
Vendored

import microApp from '@micro-zoe/micro-app'
const getUrl = (s) => {
let url = $A.apiUrl('../' + s)
if (url.indexOf('http') == -1) {
url = window.location.origin + url
}
return import.meta.env.VITE_OKR_WEB_URL || url;
}
export default function() {
let urls = "";
let route = "/";
let modules = {};
let obj = {
loader(code,url) {
if (process.env.NODE_ENV === 'development') {
const match = /^https?:\/\/([^:/]+)(?::(\d+))?/.exec(url);
if( match && match[0] && url.indexOf('@vite/client') !== -1 ){
urls = url.replace("@vite/client","");
route = urls.replace(match[0].replace("@vite/client",""),"");
}
// 这里 /basename/ 需要和子应用vite.config.js中base的配置保持一致
code = code.replace( eval(`/(from|import)(\\s*['"])(${route.replace(/\//g,"\\/")})/g`) , all => {
return all.replace(route, urls)
})
}
return code
}
}
// 微应用名称
modules["micro-app"] = [obj]
modules["okr-details"] = [obj]
// 微应用
microApp.start({
plugins: {
modules: modules
}
})
//预加载
microApp.preFetch([
{
name: 'micro-app',
url: getUrl("/apps/okr"),
disableSandbox: true
}
])
}