Dynamic Components — Performance Considerations

DEX475 - JavaScript

📄 第 167 页 🎬 视频课程

课程章节介绍

同学们,咱们这节课来聊一聊动态组件在性能方面需要特别注意的地方,这可是动态组件的“主战场”。 首先你要知道,在 Lightning Web Components 里,静态导入和你通常写的 `import` 语句一样,框架在打包的时候会把所有静态导入的组件代码都合并成一个大文件,浏览器一次请求就全拿到了,后面要用的时候马上就能渲染,没有任何额外的网络开销。 但动态导入就不一样了,比如你用 `import('c/xxx')` 这样的写法,是在代码跑到那一行才去请求对应的 JavaScript 文件,这就意味着要多一次网络来回。除非浏览器之前已经缓存过这个组件了,否则每次都能明显感觉到延迟。 所以这儿有两个重要的建议,听好喽: 第一个,写动态导入的时候,尽量用字符串字面量,比如 `import('c/myModal')`,而不是 `import('c/' + componentName)` 这种拼接的变量。因为用字符串字面量的话,打包工具或者未来的框架版本就能提前分析出来你要用到哪些组件,甚至可以提前把它们打包到一起,避免运行时再去请求,这叫“可静态分析”。虽然咱们现在的框架还没做这个优化,但是将来的版本很可能就会这么做,你这么写是在为长期性能做准备。 第二个,千万别滥用动态导入。我的建议是,项目初期一律先用静态导入,把组件都老老实实 import 进来放在那儿。等到你确实发现打包后的文件太大了,大到已经明显拖慢了页面第一次加载的速度,这时候你再有针对性地把那些不常用的、大的组件改成动态导入。记住,性能优化永远是先测量、后优化,而不是一上来就到处用动态导入,反而可能把用户体验搞得更差。 好,关于动态组件的性能要点就这两条,简单但非常重要,实际项目里一定得把握好这个平衡。有什么问题随时打断我。

关键词

LWC Lightning Web Components Salesforce