You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS中多次调用同路径dynamic import如何进行性能优化?

优化方案

ES 模块本身自带全局缓存机制,你当前的写法实际上不会重复执行../abcs模块的加载逻辑,所有重复的import('../abcs')调用都会直接返回第一次加载完成的缓存模块对象,不存在实际的性能损耗。但我们可以从代码可维护性角度优化写法,消除路径硬编码冗余。

方案1:抽离公共导入函数(兼容所有Next.js版本)

不需要修改原有Index.js的导出逻辑,仅修改App.js中的导入部分,把重复的导入路径抽成复用函数即可,还支持给每个组件单独配置动态导入参数:

// App.js
import dynamic from 'next/dynamic'

// 公共导入逻辑,路径仅需写一次,后续修改只需要调整这一处
const importAbcModule = () => import('../abcs')

// 可单独给每个组件配置ssr开关、loading占位等参数
const A = dynamic(() => importAbcModule().then(module => module.A), { ssr: false })
const B = dynamic(() => importAbcModule().then(module => module.B), { loading: () => <p>加载中</p> })
const C = dynamic(() => importAbcModule().then(module => module.C))

方案2:批量解构导入(适用Next.js 12.1+ 版本)

新版本Next.js的dynamic支持直接导入整个模块后解构命名导出,写法更简洁,适合所有组件的动态导入配置一致的场景:

// App.js
import dynamic from 'next/dynamic'

const { A, B, C } = dynamic(() => import('../abcs'), {
  ssr: true // 配置对三个组件同时生效
})

注意:你示例代码里使用的中文弯引号‘’需要替换为英文单引号',否则会触发语法报错。

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:54:03