From ccea4b5b1b8af93575613ff77f0af3fb06782c3d Mon Sep 17 00:00:00 2001 From: weifashi <605403358@qq.com> Date: Mon, 10 Jul 2023 18:41:15 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=BE=AE?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 5 +++- resources/assets/js/app.js | 3 +++ resources/assets/js/microapp.js | 35 ++++++++++++++++++++++++++ resources/assets/js/pages/microapp.vue | 7 ++++++ resources/assets/js/routes.js | 5 ++++ 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 resources/assets/js/microapp.js create mode 100644 resources/assets/js/pages/microapp.vue diff --git a/package.json b/package.json index 3200a0718..090d9573c 100644 --- a/package.json +++ b/package.json @@ -87,5 +87,8 @@ "url": "https://www.dootask.com/desktop/publish" } } - ] + ], + "dependencies": { + "@micro-zoe/micro-app": "^0.8.11" + } } diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js index 60a1cccba..85a2bca9c 100644 --- a/resources/assets/js/app.js +++ b/resources/assets/js/app.js @@ -1,6 +1,9 @@ const isElectron = !!(window && window.process && window.process.type); const isEEUiApp = window && window.navigator && /eeui/i.test(window.navigator.userAgent); +import microappInit from "./microapp" +microappInit() + import {switchLanguage as $L} from "./language"; import './functions/common' diff --git a/resources/assets/js/microapp.js b/resources/assets/js/microapp.js new file mode 100644 index 000000000..d0a908dcb --- /dev/null +++ b/resources/assets/js/microapp.js @@ -0,0 +1,35 @@ +import microApp from '@micro-zoe/micro-app' + +export default function() { + let urls = ""; + let route = "/microapp/"; + 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] + + // 微应用 + microApp.start({ + plugins: { + modules: modules + } + }) + +} \ No newline at end of file diff --git a/resources/assets/js/pages/microapp.vue b/resources/assets/js/pages/microapp.vue new file mode 100644 index 000000000..96171bd5b --- /dev/null +++ b/resources/assets/js/pages/microapp.vue @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/resources/assets/js/routes.js b/resources/assets/js/routes.js index 13ba1ab4a..f0fc654bc 100755 --- a/resources/assets/js/routes.js +++ b/resources/assets/js/routes.js @@ -168,4 +168,9 @@ export default [ path: '*', component: () => import('./pages/404.vue') }, + { + path: '/microapp/*', + name: 'microapp', + component: () => import('./pages/microapp.vue') + }, ]