Mik*_*ika 6 reactjs webpack next.js
在一个更大的项目中,我使用了相当多的第三方库,包括 firebase、redux 等,以及一些更具体的库(但仅在几个页面上使用),例如 konvaJS、jimp,...我最近刚刚迁移到 nextJS 来加速网站并可能允许 SSR。然而,迁移后,Lighthouse Speedtest 与 Pure React 版本相比有所下降。主要问题似乎是共享 JS 首先加载包。
经过一些优化,包括使用延迟加载更大的组件dynamic()
和模块await import()
,我成功地将共享的首次加载 JS 包压缩了一半,但它们仍然在 400KB 左右,这太重了。我猜想 Firebase 之类的重型模块也包含在那里,因为应用程序中基本上到处都需要它。
我还尝试分析与 的依赖关系@next/bundle-analyzer
。但可视化并不容易解释。它是否还列出了延迟加载的模块?此外,我还有一些依赖项多次打包在不同的包中。最后但并非最不重要的一点是,分析器可视化的包与build
输出的名称不匹配。
任何有助于减少或更好地理解该过程的帮助都将受到高度赞赏。我正在使用当前的 React 和 Next.js 版本。
Edit2:我仍然对bundle-analyzer的输出感到困惑。jspdf
例如,该模块仅在一个页面/组件中使用并且延迟加载。它在分析仪中仍然可见是否正确?它对共享 JS 包大小没有任何影响。
Edit3:我设法延迟加载我的 firebase 模块(这对我的应用程序至关重要),因此我节省了超过 200KB 的共享 JS 大小。还是希望能减少剩下的。顺便说一句,捆绑分析器的输出并没有真正改变。
小智 2
您使用 FontAwesome 吗?通过删除 FontAwesome 依赖项并直接下载各个 .svg 图标,我们能够将“所有人共享的首次加载 JS”从 504kb 减少到 276kb。
前
后
归档时间: |
|
查看次数: |
4197 次 |
最近记录: |