diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md
index b9a5fc3234e790598181343e85c97e1311e5216a..0fd29e6b92bdb1c8973413a2ab3a35bd7f5206ac 100644
--- a/CHANGELOG.zh_CN.md
+++ b/CHANGELOG.zh_CN.md
@@ -4,6 +4,10 @@
- 移除左侧菜单搜索,新增顶部菜单搜索功能
+### ⚡ Performance Improvements
+
+- 异步引入组件
+
### 🎫 Chores
- 返回顶部样式调整,避免遮住其他元素
@@ -14,6 +18,9 @@
- 修复多级路由缓存导致组件渲染多次的问题
- 修复地图图表切换后消失问题
- 修复登录成功 notify 消失问题
+- 修改 `VirtualScroll`和`ImportExcel`组件名为`VScroll`与`ImpExcel`,暂时解决含有关键字的组件在 vue 模版内使用内存溢出
+- 修复 axios 大小写问题
+- 修复按钮样式问题
## 2.0.0-rc.13 (2020-12-10)
diff --git a/src/components/Application/index.ts b/src/components/Application/index.ts
index 8b4993c3bd41536cc87c6da03f380d59eabb44c0..57074ccce9614872ee6420699e64f17ddee610a3 100644
--- a/src/components/Application/index.ts
+++ b/src/components/Application/index.ts
@@ -1,9 +1,13 @@
import { withInstall } from '../util';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
-export const AppLocalePicker = createAsyncComponent(() => import('./src/AppLocalePicker.vue'));
+export const AppLocalePicker = createAsyncComponent(() => import('./src/AppLocalePicker.vue'), {
+ loading: true,
+});
export const AppProvider = createAsyncComponent(() => import('./src/AppProvider.vue'));
-export const AppSearch = createAsyncComponent(() => import('./src/search/AppSearch.vue'));
+export const AppSearch = createAsyncComponent(() => import('./src/search/AppSearch.vue'), {
+ loading: true,
+});
export const AppLogo = createAsyncComponent(() => import('./src/AppLogo.vue'));
withInstall(AppLocalePicker, AppLogo, AppProvider, AppSearch);
diff --git a/src/components/Button/src/BasicButton.vue b/src/components/Button/src/BasicButton.vue
index 7ea10764dfa60afd0e427e1fb499a82d14a93507..daf49f6e820c25ebb92cb0e8ac3c4ae751dbf806 100644
--- a/src/components/Button/src/BasicButton.vue
+++ b/src/components/Button/src/BasicButton.vue
@@ -1,9 +1,9 @@
@@ -27,8 +27,6 @@
postIcon: propTypes.string,
},
setup(props, { attrs }) {
- const getIsCircleBtn = computed(() => attrs.shape === 'circle');
-
const getColor = computed(() => {
const { color, disabled } = props;
return {
@@ -41,7 +39,7 @@
return { ...attrs, ...props };
});
- return { getBindValue, getColor, getIsCircleBtn };
+ return { getBindValue, getColor };
},
});
diff --git a/src/components/Container/index.ts b/src/components/Container/index.ts
index eb4e8ff6602232a926d9cbbab30e1e331a2b43b1..e1131178bdd7bd819aa1bdac6d8361fe854cfd6d 100644
--- a/src/components/Container/index.ts
+++ b/src/components/Container/index.ts
@@ -1,10 +1,12 @@
-import ScrollContainer from './src/ScrollContainer.vue';
-import CollapseContainer from './src/collapse/CollapseContainer.vue';
-import LazyContainer from './src/LazyContainer.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const ScrollContainer = createAsyncComponent(() => import('./src/ScrollContainer.vue'));
+export const CollapseContainer = createAsyncComponent(
+ () => import('./src/collapse/CollapseContainer.vue')
+);
+export const LazyContainer = createAsyncComponent(() => import('./src/LazyContainer.vue'));
+
withInstall(ScrollContainer, CollapseContainer, LazyContainer);
export * from './src/types';
-
-export { ScrollContainer, CollapseContainer, LazyContainer };
diff --git a/src/components/CountTo/index.ts b/src/components/CountTo/index.ts
index ec705e18ff2b9702356d92850114ed8e9f153ca0..24f9e647781460509394b401892d4d18631d3d64 100644
--- a/src/components/CountTo/index.ts
+++ b/src/components/CountTo/index.ts
@@ -1,7 +1,8 @@
// Transform vue-count-to to support vue3 version
-import CountTo from './src/index.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const CountTo = createAsyncComponent(() => import('./src/index.vue'));
+
withInstall(CountTo);
-export { CountTo };
diff --git a/src/components/Description/index.ts b/src/components/Description/index.ts
index 188e5b65ee347fb482590aba56dab9da3f1bd249..9d60038ec4d1b5a694394e2813dff4a0f4634ad3 100644
--- a/src/components/Description/index.ts
+++ b/src/components/Description/index.ts
@@ -1,9 +1,9 @@
-import Description from './src/index';
-
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const Description = createAsyncComponent(() => import('./src/index'));
+
withInstall(Description);
export * from './src/types';
export { useDescription } from './src/useDescription';
-export { Description };
diff --git a/src/components/Drawer/index.ts b/src/components/Drawer/index.ts
index e05b0567c9d6dc6af81625b625d15488e2936459..28ab6eb9142f459526c925091f5fc3f7e52c9929 100644
--- a/src/components/Drawer/index.ts
+++ b/src/components/Drawer/index.ts
@@ -1,7 +1,8 @@
-import BasicDrawer from './src/BasicDrawer';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const BasicDrawer = createAsyncComponent(() => import('./src/BasicDrawer'));
+
withInstall(BasicDrawer);
export * from './src/types';
export { useDrawer, useDrawerInner } from './src/useDrawer';
-export { BasicDrawer };
diff --git a/src/components/Dropdown/index.ts b/src/components/Dropdown/index.ts
index 8f193b3d6cc9440c13fe22419b77f09cca5a7ca6..a95b775463c0675c00f65e480a462d8fb4bd3679 100644
--- a/src/components/Dropdown/index.ts
+++ b/src/components/Dropdown/index.ts
@@ -1,7 +1,7 @@
-import Dropdown from './src/Dropdown';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const Dropdown = createAsyncComponent(() => import('./src/Dropdown'));
+
withInstall(Dropdown);
export * from './src/types';
-
-export { Dropdown };
diff --git a/src/components/Excel/index.ts b/src/components/Excel/index.ts
index 113066e57bb0d7624ddb7b74e3a8c08fb417afd6..ac36ff86042c933bc3733c61bdac91c3b809769e 100644
--- a/src/components/Excel/index.ts
+++ b/src/components/Excel/index.ts
@@ -1,12 +1,12 @@
-import ImportExcel from './src/ImportExcel.vue';
-import ExportExcelModel from './src/ExportExcelModel.vue';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import { withInstall } from '../util';
-withInstall(ImportExcel, ExportExcelModel);
+export const ImpExcel = createAsyncComponent(() => import('./src/ImportExcel.vue'));
+export const ExpExcelModel = createAsyncComponent(() => import('./src/ExportExcelModel.vue'));
+
+withInstall(ImpExcel, ExpExcelModel);
export * from './src/types';
export { jsonToSheetXlsx, aoaToSheetXlsx } from './src/Export2Excel';
-
-export { ImportExcel, ExportExcelModel };
diff --git a/src/components/Icon/index.tsx b/src/components/Icon/index.tsx
index ca8c0e4314d5f0797707185b0d143c3771725c35..8bf070e05b90e99f5eccc6b2dc07d5264332483c 100644
--- a/src/components/Icon/index.tsx
+++ b/src/components/Icon/index.tsx
@@ -1,5 +1,7 @@
import './index.less';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
import type { PropType } from 'vue';
import {
defineComponent,
@@ -14,7 +16,7 @@ import {
import Iconify from '@purge-icons/generated';
import { isString } from '/@/utils/is';
import { propTypes } from '/@/utils/propTypes';
-export default defineComponent({
+const Icon = defineComponent({
name: 'GIcon',
props: {
// icon name
@@ -81,3 +83,9 @@ export default defineComponent({
);
},
});
+
+export default createAsyncComponent(() => {
+ return new Promise((resolve) => {
+ resolve(Icon);
+ });
+});
diff --git a/src/components/Loading/index.ts b/src/components/Loading/index.ts
index 91e62e0146a637a7f4e6b466f623336a8c02419b..d2b30e9c8d545274eb63a80d9b93fad9bd33dd77 100644
--- a/src/components/Loading/index.ts
+++ b/src/components/Loading/index.ts
@@ -1,9 +1,9 @@
import './src/indicator';
-import Loading from './src/index.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const Loading = createAsyncComponent(() => import('./src/index.vue'));
+
withInstall(Loading);
export { useLoading } from './src/useLoading';
export { createLoading } from './src/createLoading';
-
-export { Loading };
diff --git a/src/components/Markdown/index.ts b/src/components/Markdown/index.ts
index bb061d456ccdedf2dca0f19080c408672b041c79..1ad8a7295f63250cf9268dd51b5a586ee580ed15 100644
--- a/src/components/Markdown/index.ts
+++ b/src/components/Markdown/index.ts
@@ -1,9 +1,8 @@
-import MarkDown from './src/index.vue';
-
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const MarkDown = createAsyncComponent(() => import('./src/index.vue'));
+
withInstall(MarkDown);
export * from './src/types';
-
-export { MarkDown };
diff --git a/src/components/Menu/index.ts b/src/components/Menu/index.ts
index 97b884fcbb1bf89bda19fd4a516403d056a4e6e9..daef98bc2451663a30504dd91fc891ff12bc42cd 100644
--- a/src/components/Menu/index.ts
+++ b/src/components/Menu/index.ts
@@ -1,5 +1,7 @@
-import BasicMenu from './src/BasicMenu';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+export const BasicMenu = createAsyncComponent(() => import('./src/BasicMenu'), { loading: false });
+
withInstall(BasicMenu);
-export { BasicMenu };
diff --git a/src/components/Modal/index.ts b/src/components/Modal/index.ts
index 10b26ef406fc34b0d5b395bcac1eb49a3d548ef2..8b96e646d069f7bd81bf5b3c107060306bbbdd58 100644
--- a/src/components/Modal/index.ts
+++ b/src/components/Modal/index.ts
@@ -1,10 +1,11 @@
import './src/index.less';
-import BasicModal from './src/BasicModal';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+export const BasicModal = createAsyncComponent(() => import('./src/BasicModal'));
withInstall(BasicModal);
export { useModalContext } from './src/useModalContext';
export { useModal, useModalInner } from './src/useModal';
export * from './src/types';
-export { BasicModal };
diff --git a/src/components/Page/index.ts b/src/components/Page/index.ts
index c46b7eeac2b3163e302a24ba238d6a82f01d7f48..9ceda93211758a4712fc48e2900d99bcf3ea0ebf 100644
--- a/src/components/Page/index.ts
+++ b/src/components/Page/index.ts
@@ -1,5 +1,6 @@
-import PageFooter from './src/PageFooter.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const PageFooter = createAsyncComponent(() => import('./src/PageFooter.vue'));
+
withInstall(PageFooter);
-export { PageFooter };
diff --git a/src/components/Qrcode/index.ts b/src/components/Qrcode/index.ts
index 9ccd00c4a2b49faaaea81f9c5d9c860f0d984483..6f6ed7f2eeac60b4a304c0ee34a872bbac6aaddf 100644
--- a/src/components/Qrcode/index.ts
+++ b/src/components/Qrcode/index.ts
@@ -1,2 +1,7 @@
-export { default as QrCode } from './src/index.vue';
+import { withInstall } from '../util';
+
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const QrCode = createAsyncComponent(() => import('./src/index.vue'));
+
+withInstall(QrCode);
export * from './src/types';
diff --git a/src/components/Scrollbar/index.ts b/src/components/Scrollbar/index.ts
index 5efa77a21f5a5af9eca6eb65ef68efcb805c9d31..2148708ee43ffae360a8017015d56d2c61e11173 100644
--- a/src/components/Scrollbar/index.ts
+++ b/src/components/Scrollbar/index.ts
@@ -2,10 +2,11 @@
* copy from element-ui
*/
-import Scrollbar from './src/Scrollbar';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const Scrollbar = createAsyncComponent(() => import('./src/Scrollbar'));
+
withInstall(Scrollbar);
-export { Scrollbar };
export type { ScrollbarType } from './src/types';
diff --git a/src/components/StrengthMeter/index.tsx b/src/components/StrengthMeter/index.tsx
index 80f7a33f9fe5b811cf756b5ec5d2e292b565b9d3..e55f67edf921859a8e2a46a65b1cff362fec61b2 100644
--- a/src/components/StrengthMeter/index.tsx
+++ b/src/components/StrengthMeter/index.tsx
@@ -1,5 +1,7 @@
-import StrengthMeter from './src/index';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+export const StrengthMeter = createAsyncComponent(() => import('./src/index'));
+
withInstall(StrengthMeter);
-export { StrengthMeter };
diff --git a/src/components/Tinymce/index.ts b/src/components/Tinymce/index.ts
index 3dd4e2b4c7326ffd6969b84cd0b157c8d838f575..0a31c55e9a122b706805a69d2e4f86d09fe04fb7 100644
--- a/src/components/Tinymce/index.ts
+++ b/src/components/Tinymce/index.ts
@@ -1,5 +1,6 @@
-import Tinymce from './src/Editor.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const Tinymce = createAsyncComponent(() => import('./src/Editor.vue'));
+
withInstall(Tinymce);
-export { Tinymce };
diff --git a/src/components/Transition/index.ts b/src/components/Transition/index.ts
index 9f8e47b402b50dbe7e852100206714b952032926..3300362379339ea1400ee27c542bcb237718b7bf 100644
--- a/src/components/Transition/index.ts
+++ b/src/components/Transition/index.ts
@@ -1,4 +1,5 @@
import { createSimpleTransition, createJavascriptTransition } from './src/CreateTransition';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import ExpandTransitionGenerator from './src/ExpandTransition';
@@ -28,4 +29,4 @@ export const ExpandXTransition = createJavascriptTransition(
ExpandTransitionGenerator('', true)
);
-export { default as ExpandTransition } from './src/ExpandTransition.vue';
+export const ExpandTransition = createAsyncComponent(() => import('./src/ExpandTransition.vue'));
diff --git a/src/components/Tree/index.ts b/src/components/Tree/index.ts
index 574d5ea28caa454bb1cbc6e1bb49bf6eeb4ae8b0..9445da6d1d50acace436be8f8dba5c9f5a9e7c74 100644
--- a/src/components/Tree/index.ts
+++ b/src/components/Tree/index.ts
@@ -1,3 +1,9 @@
-export { default as BasicTree } from './src/BasicTree';
-export * from './src/types';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+import { withInstall } from '../util';
+
+export const BasicTree = createAsyncComponent(() => import('./src/BasicTree'));
+
+withInstall(BasicTree);
+
export type { ContextMenuItem } from '/@/hooks/web/useContextMenu';
+export * from './src/types';
diff --git a/src/components/Upload/index.ts b/src/components/Upload/index.ts
index 8d7d804525dee11cbb7d1b0f069d267af0694e52..a923c2f24f50a2d5d500974eb269f2e003422eb6 100644
--- a/src/components/Upload/index.ts
+++ b/src/components/Upload/index.ts
@@ -1,5 +1,6 @@
-import BasicUpload from './src/BasicUpload.vue';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+export const BasicUpload = createAsyncComponent(() => import('./src/BasicUpload.vue'));
+
withInstall(BasicUpload);
-export { BasicUpload };
diff --git a/src/components/Verify/index.ts b/src/components/Verify/index.ts
index cc7008cf885d55e337962546367daef01c22e495..c26ffd34441588a255068697a8e62d76ec2ed5b8 100644
--- a/src/components/Verify/index.ts
+++ b/src/components/Verify/index.ts
@@ -1,9 +1,10 @@
-import BasicDragVerify from './src/DragVerify';
-import RotateDragVerify from './src/ImgRotate';
import { withInstall } from '../util';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+export const BasicDragVerify = createAsyncComponent(() => import('./src/DragVerify'));
+export const RotateDragVerify = createAsyncComponent(() => import('./src/ImgRotate'));
+
withInstall(BasicDragVerify, RotateDragVerify);
export * from './src/types';
-
-export { BasicDragVerify, RotateDragVerify };
diff --git a/src/components/VirtualScroll/index.ts b/src/components/VirtualScroll/index.ts
index a712e2b3d9a2c921e9e7868bdbc802ceb640cdc9..d894c7613de41392e69824379af2d1c22977e79d 100644
--- a/src/components/VirtualScroll/index.ts
+++ b/src/components/VirtualScroll/index.ts
@@ -1,5 +1,7 @@
-import VirtualScroll from './src/index';
import { withInstall } from '../util';
-withInstall(VirtualScroll);
-export { VirtualScroll };
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+export const VScroll = createAsyncComponent(() => import('./src/index'));
+
+withInstall(VScroll);
diff --git a/src/design/ant/btn.less b/src/design/ant/btn.less
index 2f3b1de7f820be3d2f47ff1560a5e4ff0c3ed64b..403351f91e54a6c9260db9cd9daf5338d235cf52 100644
--- a/src/design/ant/btn.less
+++ b/src/design/ant/btn.less
@@ -1,5 +1,8 @@
// button重置
.ant-btn {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
// &.ant-btn-success:not(.ant-btn-link),
// &.ant-btn-error:not(.ant-btn-link),
// &.ant-btn-warning:not(.ant-btn-link),
diff --git a/src/layouts/page/index.tsx b/src/layouts/page/index.tsx
index 1a33d56a67cfff2a75c1d0871925503d17f2588d..a5924a52b009d18e6e04e8ef42821ce5e4d0a483 100644
--- a/src/layouts/page/index.tsx
+++ b/src/layouts/page/index.tsx
@@ -54,7 +54,10 @@ export default defineComponent({
renderComp()
);
- return unref(getEnableTransition) ? (
+ if (!unref(getEnableTransition)) {
+ return PageContent;
+ }
+ return (