From 6d550505a01e4ecf8628aba515d6b0b91477ecbe Mon Sep 17 00:00:00 2001 From: miaoSpring <539943419@qq.com> Date: Tue, 24 Dec 2024 13:26:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=9E=E7=8E=B0=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=A4=96=E9=83=A8=E6=8F=92=E4=BB=B6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/init/initPlugin.ts | 2 +- .../components/miaoDirectoryItem.vue | 1 + .../export_mainMenu.ts} | 0 src/plugins/registerExternalPlugin/export.ts | 29 +++++++++++++++ .../registerExternalPlugin.ts | 25 +++++++++++++ vite.config.ts | 36 ++----------------- 6 files changed, 58 insertions(+), 35 deletions(-) rename src/plugins/{miaoMusicPlayer_mainMenu/export.ts => miaoMusicPlayer/export_mainMenu.ts} (100%) create mode 100644 src/plugins/registerExternalPlugin/export.ts create mode 100644 src/plugins/registerExternalPlugin/registerExternalPlugin.ts diff --git a/src/hooks/init/initPlugin.ts b/src/hooks/init/initPlugin.ts index e841ef5..9d21186 100644 --- a/src/hooks/init/initPlugin.ts +++ b/src/hooks/init/initPlugin.ts @@ -4,7 +4,7 @@ import { alertTipType, PluginExportType } from "@/types/type"; const initPlugin = async (globalAlertTip: alertTipType) => { initPluginCenter(globalAlertTip); - const modulesFiles = import.meta.glob("@/plugins/**/export.ts", { eager: true }); + const modulesFiles = import.meta.glob("@/plugins/**/export*.ts", { eager: true }); const pluginCenter = usePluginCenter(); const promiseArray = []; for (let pluginConfig of Object.values(modulesFiles)) { diff --git a/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue b/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue index 2c90111..cea02ec 100644 --- a/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue +++ b/src/plugins/miaoDirectory/components/miaoDirectoryItem.vue @@ -73,6 +73,7 @@ const mainRef = ref() const draggable = ref(true) // 使用ResizeObserver实现 +// 什么?性能问题?这玩意性能问题多着呢,轮不到它。 const clientWidth = ref(666) const name = props.name ?? props.item.name diff --git a/src/plugins/miaoMusicPlayer_mainMenu/export.ts b/src/plugins/miaoMusicPlayer/export_mainMenu.ts similarity index 100% rename from src/plugins/miaoMusicPlayer_mainMenu/export.ts rename to src/plugins/miaoMusicPlayer/export_mainMenu.ts diff --git a/src/plugins/registerExternalPlugin/export.ts b/src/plugins/registerExternalPlugin/export.ts new file mode 100644 index 0000000..f695bbc --- /dev/null +++ b/src/plugins/registerExternalPlugin/export.ts @@ -0,0 +1,29 @@ +import { Plugin, PluginGroup } from "@/class/PluginCenter"; +import { LogoGithub } from "@vicons/ionicons5"; +import { PluginExportType } from "@/types/type"; +import { shallowRef } from "vue"; +import registerExternalPlugin from "./registerExternalPlugin"; + +const pluginConfig: Plugin = { + name: "导入插件", + icon: shallowRef(LogoGithub), + filter: (vDirs, vFiles) => { + if (vDirs.length !== 0) { + return false; + } + if (vFiles.length !== 1) { + return false; + } + return vFiles[0].name.endsWith('js') + }, + disable: false, + group: [PluginGroup.default], + func: registerExternalPlugin, + priority: -1 +}; + +export default pluginConfig; + +export const type = PluginExportType.default; + +export const key = 'registerExternalPlugin'; diff --git a/src/plugins/registerExternalPlugin/registerExternalPlugin.ts b/src/plugins/registerExternalPlugin/registerExternalPlugin.ts new file mode 100644 index 0000000..e53bf3b --- /dev/null +++ b/src/plugins/registerExternalPlugin/registerExternalPlugin.ts @@ -0,0 +1,25 @@ +import VirtualDirectory, { VirtualFile } from "@/class/VirtualDirectory"; +// import useMiaoFetchApi from "@/hooks/useMiaoFetchApi"; +import { PluginExportType, usePluginHooksType } from "@/types/type"; +import type { Plugin, registerComponentOption } from "@/class/PluginCenter"; + +// const miaoFetchApi = useMiaoFetchApi() + +export default async function registerExternalPlugin(_VDirectories: VirtualDirectory[], VFiles: VirtualFile[], hooks: usePluginHooksType) { + const targetPluginVFile = VFiles[0] as VirtualFile + // const pluginU8iArr = await miaoFetchApi.getFile(targetPluginVFile).response + // const pluginText = new TextDecoder().decode(pluginU8iArr) + // const plugin = await import(/* @vite-ignore */'') + const plugin = await import(/* @vite-ignore */ targetPluginVFile.url) as { + default: registerComponentOption | Plugin; + type: PluginExportType; + key?: string; + } + // console.log(plugin) + const pc = hooks.getPluginCenter() + if(plugin.type === PluginExportType.default) { + pc.register(`${Math.random()}`, plugin.default as Plugin) + } else { + pc.registerComponent(plugin.default as registerComponentOption) + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index d4673fd..fafe3a7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -19,42 +19,10 @@ export default defineConfig({ }, server: { proxy: { - '/get': { + '^/(get|upload|delete|query|rename|cut|mkdir)': { target: 'http://127.0.0.1:17705', changeOrigin: true, - rewrite: (path) => path.replace(/^\/get/, '/get') - }, - - '/upload': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/upload/, '/upload') - }, - - '/delete': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/delete/, '/delete') - }, - '/query': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/query/, '/query') - }, - '/rename': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/rename/, '/rename') - }, - '/cut': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/cut/, '/cut') - }, - '/mkdir': { - target: 'http://127.0.0.1:17705', - changeOrigin: true, - rewrite: (path) => path.replace(/^\/mkdir/, '/mkdir') + rewrite: (path) => path } } },