From 3646bcea0f63b3cc07f08be535ba591e83e12784 Mon Sep 17 00:00:00 2001 From: hexqi Date: Sat, 8 Jun 2024 11:52:32 +0800 Subject: [PATCH 1/2] feat: add useHttp and useEnv --- packages/design-core/src/init.js | 3 ++- packages/entry/src/hooks.js | 16 ++++++++++++++-- packages/http/src/index.js | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/design-core/src/init.js b/packages/design-core/src/init.js index 59a5316a51..c81ac82580 100644 --- a/packages/design-core/src/init.js +++ b/packages/design-core/src/init.js @@ -18,13 +18,14 @@ import { injectGlobalComponents } from '@opentiny/tiny-engine-common' import { initHttp } from '@opentiny/tiny-engine-http' import TinyThemeTool from '@opentiny/vue-theme/theme-tool' import { tinySmbTheme } from '@opentiny/vue-theme/theme' // SMB 主题 -import { defineEntry, mergeRegistry } from '@opentiny/tiny-engine-entry' +import { defineEntry, mergeRegistry, initHook, HOOK_NAME } from '@opentiny/tiny-engine-entry' import App from './layout/App.vue' import defaultRegistry from '../registry.js' import { registerConfigurators } from './registerConfigurators' const defaultLifeCycles = { beforeAppCreate: ({ registry }) => { + initHook(HOOK_NAME.useEnv, import.meta.env) // 合并用户自定义注册表 const newRegistry = mergeRegistry(registry, defaultRegistry) if (process.env.NODE_ENV === 'development') { diff --git a/packages/entry/src/hooks.js b/packages/entry/src/hooks.js index 4075aa34b7..d163a4fdd1 100644 --- a/packages/entry/src/hooks.js +++ b/packages/entry/src/hooks.js @@ -14,6 +14,8 @@ export const HOOK_NAME = { useDataSource: 'dataSource', useBreadcrumb: 'breadcrumb', useHelp: 'help', + useHttp: 'http', + useEnv: 'env', useCustom: 'custom' } @@ -33,6 +35,8 @@ const hooksState = { [HOOK_NAME.useDataSource]: {}, [HOOK_NAME.useBreadcrumb]: {}, [HOOK_NAME.useHelp]: {}, + [HOOK_NAME.useHttp]: {}, + [HOOK_NAME.useEnv]: {}, [HOOK_NAME.useCustom]: {} // 自定义 } @@ -51,11 +55,19 @@ export const useDataSource = () => hooksState[HOOK_NAME.useDataSource] export const useBreadcrumb = () => hooksState[HOOK_NAME.useBreadcrumb] export const useProperty = () => hooksState[HOOK_NAME.useProperty] export const useHelp = () => hooksState[HOOK_NAME.useHelp] +export const useHttp = () => hooksState[HOOK_NAME.useHttp] +export const useEnv = () => hooksState[HOOK_NAME.useEnv] export const useCustom = () => hooksState[HOOK_NAME.useCustom] -export function initHook(hookName, hookContent) { +export function initHook(hookName, hookContent, { useDefaultExport } = {}) { if (!Object.keys(hooksState).includes(hookName)) { throw new Error('Invalid hook name provided: ' + hookName) } - Object.assign(hooksState[hookName], hookContent) + if (useDefaultExport) { + hooksState[hookName] = hookContent + } else { + Object.assign(hooksState[hookName], hookContent) + } + + return hooksState[hookName] } diff --git a/packages/http/src/index.js b/packages/http/src/index.js index 64b182c301..63da4c97a1 100644 --- a/packages/http/src/index.js +++ b/packages/http/src/index.js @@ -18,6 +18,7 @@ import Login from './Login.vue' import { getConfig } from './config' import mockData from './mock' import { constants } from '@opentiny/tiny-engine-utils' +import { initHook, HOOK_NAME } from '@opentiny/tiny-engine-entry' const { BROADCAST_CHANNEL } = constants @@ -153,3 +154,5 @@ export const initHttp = ({ env }) => { } export const useHttp = () => createHttp({ enableMock: isMock() }) + +initHook(HOOK_NAME.useHttp, useHttp, { useDefaultExport: true }) From a1eca6e514c0119e123e3599bd78caf7fa7b5907 Mon Sep 17 00:00:00 2001 From: hexqi Date: Sat, 8 Jun 2024 14:24:52 +0800 Subject: [PATCH 2/2] fix: code review --- designer-demo/src/main.js | 7 ++++++- packages/design-core/src/init.js | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/designer-demo/src/main.js b/designer-demo/src/main.js index 6defe9df2a..fda1cda42c 100644 --- a/designer-demo/src/main.js +++ b/designer-demo/src/main.js @@ -13,7 +13,12 @@ // 导入@opentiny/tiny-engine时,内部的依赖包也会逐个导入,可能会执行useComplie,此时需要templateHashMap。所以需要先执行一次defineEntry import { registry } from './defineEntry.js' import { init } from '@opentiny/tiny-engine' +import { initHook, HOOK_NAME } from '@opentiny/tiny-engine-entry' import { configurators } from './configurators.js' import 'virtual:svg-icons-register' -init({ registry, configurators }) +const beforeAppCreate = () => { + initHook(HOOK_NAME.useEnv, import.meta.env) +} + +init({ registry, configurators, lifeCycles: { beforeAppCreate } }) diff --git a/packages/design-core/src/init.js b/packages/design-core/src/init.js index c81ac82580..59a5316a51 100644 --- a/packages/design-core/src/init.js +++ b/packages/design-core/src/init.js @@ -18,14 +18,13 @@ import { injectGlobalComponents } from '@opentiny/tiny-engine-common' import { initHttp } from '@opentiny/tiny-engine-http' import TinyThemeTool from '@opentiny/vue-theme/theme-tool' import { tinySmbTheme } from '@opentiny/vue-theme/theme' // SMB 主题 -import { defineEntry, mergeRegistry, initHook, HOOK_NAME } from '@opentiny/tiny-engine-entry' +import { defineEntry, mergeRegistry } from '@opentiny/tiny-engine-entry' import App from './layout/App.vue' import defaultRegistry from '../registry.js' import { registerConfigurators } from './registerConfigurators' const defaultLifeCycles = { beforeAppCreate: ({ registry }) => { - initHook(HOOK_NAME.useEnv, import.meta.env) // 合并用户自定义注册表 const newRegistry = mergeRegistry(registry, defaultRegistry) if (process.env.NODE_ENV === 'development') {