gzip压缩后JS文件还是很大,该怎么进一步优化?

慕容雅雯 阅读 2

我用 Nginx 开启了 gzip 压缩,但打包后的 main.js 仍有 1.2MB,首屏加载太慢了。试过 Webpack 的 splitChunks 拆包,但效果不明显。

这是我的入口 HTML 引用方式:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8" />
  <title>App</title>
</head>
<body>
  <div id="app"></div>
  <script src="./static/js/main.abc123.js"></script>
</body>
</html>

是不是还得配合代码分割或者懒加载?现在用户一进来就要加载全部功能模块,感觉很浪费。

我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
闲人晓红
1.2MB确实大了点,光靠gzip和拆包不够的,得结合懒加载。复制这个webpack配置:

// webpack.config.js
module.exports = {
optimization: {
splitChunks: {
chunks: 'all'
}
}
}


然后改下路由配置,用React的话这样写:

// router.js
const Home = React.lazy(() => import('./Home'));
const About = React.lazy(() => import('./About'));

function App() {
return (
<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Suspense>
);
}


顺便检查下有没有把node_modules里的库也打包进来了,可以加个打包分析插件:

// package.json里加
"build:analyze": "webpack --profile --json > stats.json && webpack-bundle-analyzer stats.json"


跑完这个命令会生成可视化图表,看看哪些依赖体积大,考虑换成轻量级的。
点赞
2026-03-05 15:22