提升首屏加载时间原理:把大体积的包,分成多个小体积的包进行加载,减少请求时间
chainWebpack配置
在 umi.js 或者 umi.ts 或者 .umirc.js 或者 config.js 中配置,使用 webpack 的优化模块optimization.splitChunks实现。
chunks配置
chunks 配置需要加上 umi,否则打包完后依旧是白屏,在控制台可看到 umi.js 和 umi.css 并没有引入。
compression-webpack-plugin服务端使用gzip进行压缩
打开 config/config.ts
文件(如果是 umi2 的项目则是 .umirc.js
)
import {
defineConfig } from 'umi';
import {
join } from 'path';
import defaultSettings from './defaultSettings';
import proxy from './proxy';
import routers from './routes';
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const prodGzipList = ['js', 'css'];
const {
REACT_APP_ENV } = process.env;
export default defineConfig({
hash: true,
history: {
type: 'hash' },
publicPath: './',
antd: {
},
dva: {
hmr: true,
},
layout: {
// https://umijs.org/zh-CN/plugins/plugin-layout
locale: true,
siderWidth: 208,
...defaultSettings,