feat: 首页加载速度优化

This commit is contained in:
CaIon 2024-03-23 20:22:00 +08:00
parent 06c86397e1
commit 58f2cf3a79
6 changed files with 22 additions and 21 deletions

View File

@ -17,7 +17,6 @@
"react-dropzone": "^14.2.3",
"react-fireworks": "^1.0.4",
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
"react-telegram-login": "^1.1.2",
"react-toastify": "^9.0.8",
"react-turnstile": "^1.0.5",

View File

@ -22,9 +22,10 @@ import Log from './pages/Log';
import Chat from './pages/Chat';
import { Layout } from '@douyinfe/semi-ui';
import Midjourney from './pages/Midjourney';
import Detail from './pages/Detail';
// import Detail from './pages/Detail';
const Home = lazy(() => import('./pages/Home'));
const Detail = lazy(() => import('./pages/Detail'));
const About = lazy(() => import('./pages/About'));
function App() {
@ -202,7 +203,9 @@ function App() {
path="/detail"
element={
<PrivateRoute>
<Detail />
<Suspense fallback={<Loading></Loading>}>
<Detail />
</Suspense>
</PrivateRoute>
}
/>
@ -210,7 +213,9 @@ function App() {
path="/midjourney"
element={
<PrivateRoute>
<Midjourney />
<Suspense fallback={<Loading></Loading>}>
<Midjourney />
</Suspense>
</PrivateRoute>
}
/>

View File

@ -1,13 +1,9 @@
import React from 'react';
import { Dimmer, Loader, Segment } from 'semantic-ui-react';
import { Spin } from '@douyinfe/semi-ui';
const Loading = ({ prompt: name = 'page' }) => {
return (
<Segment style={{ height: 100 }}>
<Dimmer active inverted>
<Loader indeterminate>加载{name}...</Loader>
</Dimmer>
</Segment>
<Spin style={{height: 100}} spinning={true}>加载{name}...</Spin>
);
};

View File

@ -1,4 +1,3 @@
import { initVChartSemiTheme } from '@visactor/vchart-semi-theme';
import React from 'react';
import ReactDOM from 'react-dom/client';
import {BrowserRouter} from 'react-router-dom';
@ -15,9 +14,7 @@ import {Layout} from "@douyinfe/semi-ui";
import SiderBar from "./components/SiderBar";
// initialization
initVChartSemiTheme({
isWatchingThemeSwitch: true,
});
const root = ReactDOM.createRoot(document.getElementById('root'));
const {Sider, Content, Header} = Layout;

View File

@ -1,4 +1,6 @@
import React, {useEffect, useRef, useState} from 'react';
import { initVChartSemiTheme } from '@visactor/vchart-semi-theme';
import {Button, Col, Form, Layout, Row, Spin} from "@douyinfe/semi-ui";
import VChart from '@visactor/vchart';
import {API, isAdmin, showError, timestamp2string, timestamp2string1} from "../../helpers";
@ -292,6 +294,9 @@ const Detail = (props) => {
// formRef.current.formApi.setValue('start_timestamp', st);
// }
if (!initialized.current) {
initVChartSemiTheme({
isWatchingThemeSwitch: true,
});
initialized.current = true;
initChart();
}

View File

@ -1,6 +1,5 @@
import { defineConfig, transformWithEsbuild } from 'vite';
import react from '@vitejs/plugin-react';
import { splitVendorChunkPlugin } from 'vite'
// https://vitejs.dev/config/
export default defineConfig({
@ -19,7 +18,6 @@ export default defineConfig({
},
},
react(),
splitVendorChunkPlugin()
],
optimizeDeps: {
force: true,
@ -33,11 +31,12 @@ export default defineConfig({
rollupOptions: {
output: {
manualChunks: {
'react-vendor': ['react', 'react-dom'],
'semi': ['@douyinfe/semi-ui'],
'icons': ['@douyinfe/semi-icons'],
'semantic': ['semantic-ui-react'],
'visactor': ['@visactor/react-vchart', '@visactor/vchart']
'react-core': ['react', 'react-dom', 'react-router-dom'],
'semi-ui': ['@douyinfe/semi-icons', '@douyinfe/semi-ui'],
'semantic': ['semantic-ui-css', 'semantic-ui-react'],
'visactor': ['@visactor/react-vchart', '@visactor/vchart'],
'tools': ['axios', 'history', 'marked'],
'react-components': ['react-dropzone', 'react-fireworks', 'react-telegram-login', 'react-toastify', 'react-turnstile'],
},
},
},