From d14891b70a21ed832a561a8594f135e1eed90f02 Mon Sep 17 00:00:00 2001 From: wanchun <445436867@qq.com> Date: Tue, 4 Apr 2023 17:41:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor(plugin-layout):=20=E4=BC=98=E5=8C=96in?= =?UTF-8?q?dex.jsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit n --- packages/fes-plugin-layout/src/index.js | 7 --- .../src/runtime/helpers/fillMenu.js | 17 ++---- .../src/runtime/views/BaseLayout.vue | 8 +-- .../src/runtime/views/index.jsx | 54 +++++++++++++++++++ .../src/runtime/views/index.tpl | 44 --------------- .../fes-template-vite/src/pages/editor.vue | 16 ++---- packages/fes-template/.fes.js | 4 +- packages/fes-template/src/app.jsx | 5 +- 8 files changed, 71 insertions(+), 84 deletions(-) create mode 100644 packages/fes-plugin-layout/src/runtime/views/index.jsx delete mode 100644 packages/fes-plugin-layout/src/runtime/views/index.tpl diff --git a/packages/fes-plugin-layout/src/index.js b/packages/fes-plugin-layout/src/index.js index cc55ae20..9c6dc193 100644 --- a/packages/fes-plugin-layout/src/index.js +++ b/packages/fes-plugin-layout/src/index.js @@ -50,13 +50,6 @@ export default (api) => { }`, }); - api.writeTmpFile({ - path: absFilePath, - content: Mustache.render(readFileSync(join(__dirname, 'runtime/views/index.tpl'), 'utf-8'), { - REPLACE_USER_CONFIG: JSON.stringify(userConfig), - }), - }); - api.writeTmpFile({ path: absConfigFilePath, content: Mustache.render(readFileSync(join(__dirname, 'runtime/helpers/getConfig.tpl'), 'utf-8'), { diff --git a/packages/fes-plugin-layout/src/runtime/helpers/fillMenu.js b/packages/fes-plugin-layout/src/runtime/helpers/fillMenu.js index cbf7da55..366dfa4f 100644 --- a/packages/fes-plugin-layout/src/runtime/helpers/fillMenu.js +++ b/packages/fes-plugin-layout/src/runtime/helpers/fillMenu.js @@ -29,27 +29,16 @@ const fillMenuByRoute = (menuConfig, routeConfig, dep = 0) => { menuConfig.forEach((menu) => { const pageConfig = {}; if (menu.name) { - Object.assign( - pageConfig, - getMetaByName(routeConfig, menu.name) - ); + Object.assign(pageConfig, getMetaByName(routeConfig, menu.name)); } // menu的配置优先级高,当menu存在配置时,忽略页面的配置 Object.keys(pageConfig).forEach((prop) => { - if ( - menu[prop] === undefined - || menu[prop] === null - || menu[prop] === '' - ) { + if (menu[prop] === undefined || menu[prop] === null || menu[prop] === '') { menu[prop] = pageConfig[prop]; } }); if (menu.children && menu.children.length > 0) { - menu.children = fillMenuByRoute( - menu.children, - routeConfig, - dep - ); + menu.children = fillMenuByRoute(menu.children, routeConfig, dep); } arr.push(menu); }); diff --git a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue index 9fbdad27..cb9b6fac 100644 --- a/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue +++ b/packages/fes-plugin-layout/src/runtime/views/BaseLayout.vue @@ -189,14 +189,14 @@ export default { return []; }, }, - title: { - type: String, - default: '', - }, locale: { type: Boolean, default: false, }, + title: { + type: String, + default: '', + }, logo: { type: String, default: defaultLogo, diff --git a/packages/fes-plugin-layout/src/runtime/views/index.jsx b/packages/fes-plugin-layout/src/runtime/views/index.jsx new file mode 100644 index 00000000..03ec2029 --- /dev/null +++ b/packages/fes-plugin-layout/src/runtime/views/index.jsx @@ -0,0 +1,54 @@ +import { unref, defineComponent, computed } from 'vue'; +import { plugin } from '@@/core/coreExports'; +import { getRoutes } from '@@/core/routes/routes'; +// eslint-disable-next-line import/extensions +import getConfig from '../helpers/getConfig'; +import fillMenu from '../helpers/fillMenu'; +import BaseLayout from './BaseLayout.vue'; + +const Layout = defineComponent({ + name: 'Layout', + setup() { + const config = getConfig(); + + const menus = typeof config.menus === 'function' ? config.menus() : config.menus; + + const routes = getRoutes(); + + // 把路由的 meta 合并到 menu 配置中 + const filledMenuRef = computed(() => fillMenu(unref(menus) ?? [], routes)); + + const localeShared = plugin.getShared('locale'); + + return () => { + const slots = { + renderCustom: config.renderCustom, + locale: () => { + if (localeShared) { + return ; + } + return null; + }, + }; + return ( + + ); + }; + }, +}); + +export default Layout; diff --git a/packages/fes-plugin-layout/src/runtime/views/index.tpl b/packages/fes-plugin-layout/src/runtime/views/index.tpl deleted file mode 100644 index d1315d37..00000000 --- a/packages/fes-plugin-layout/src/runtime/views/index.tpl +++ /dev/null @@ -1,44 +0,0 @@ -import { ref, defineComponent, computed } from 'vue'; -import { plugin } from '@@/core/coreExports'; -import { getRoutes } from '@@/core/routes/routes'; -import BaseLayout from './BaseLayout.vue'; -// eslint-disable-next-line import/extensions -import getConfig from '../helpers/getConfig'; -import fillMenu from '../helpers/fillMenu'; - -const Layout = defineComponent({ - name: 'Layout', - setup() { - const initConfig = {{{REPLACE_USER_CONFIG}}} - const config = {...initConfig, ...getConfig()}; - - let menusRef = ref(config.menus); - // 如果运行时配置了,则需要处理 - if (config.menus && typeof config.menus === 'function') { - menusRef = ref(config.menus()); - } - // 把路由的meta合并到menu配置中 - const filledMenuRef = computed(() => fillMenu(menusRef.value, getRoutes())); - - const localeShared = plugin.getShared('locale'); - - const renderCustom = config.renderCustom; - - delete config.renderCustom; - - return () => { - const slots = { - renderCustom, - locale: () => { - if (localeShared) { - return ; - } - return null; - }, - }; - return ; - }; - }, -}); - -export default Layout; diff --git a/packages/fes-template-vite/src/pages/editor.vue b/packages/fes-template-vite/src/pages/editor.vue index 6aed5d6b..f97d091c 100644 --- a/packages/fes-template-vite/src/pages/editor.vue +++ b/packages/fes-template-vite/src/pages/editor.vue @@ -1,12 +1,6 @@ { @@ -21,7 +15,7 @@ import { MonacoEditor } from '@fesjs/fes'; export default { components: { - MonacoEditor + MonacoEditor, }, setup() { const editorRef = ref(); @@ -35,8 +29,8 @@ export default { return { editorRef, json, - language + language, }; - } + }, }; diff --git a/packages/fes-template/.fes.js b/packages/fes-template/.fes.js index cbbdf551..75b7ddd4 100644 --- a/packages/fes-template/.fes.js +++ b/packages/fes-template/.fes.js @@ -1,9 +1,7 @@ import { defineBuildConfig } from '@fesjs/fes'; export default defineBuildConfig({ - swc: { - loader: {}, - }, + swc: false, targets: { chrome: '78', }, diff --git a/packages/fes-template/src/app.jsx b/packages/fes-template/src/app.jsx index f022c455..fb89d5ec 100644 --- a/packages/fes-template/src/app.jsx +++ b/packages/fes-template/src/app.jsx @@ -21,7 +21,10 @@ export const beforeRender = { export const layout = (layoutConfig, { initialState }) => ({ ...layoutConfig, - renderCustom: () => , + renderCustom: (props) => { + console.log(props); + return ; + }, menus: () => { const menusRef = ref(layoutConfig.menus); watch(