Dynamically Instantiate Components — Overview & Setup

DEX475 - JavaScript

📄 第 160 页 🎬 视频课程

课程章节介绍

好,我们来看一下动态组件实例化这个特性。它确实很强大,但用的时候也要注意性能,因为它对资源的使用比较敏感。 简单来说,动态组件允许你把组件的代码加载推迟到真正要用的时候,而不是一开始就全部加载。这样做的好处很明显:用户打开页面时,初始需要下载的代码包会变小,页面加载更快。 但代价是什么呢?每一个动态导入,如果不走缓存的话,都需要一次额外的网络请求,这会增加一些运行时的开销。所以,你需要权衡什么时候用动态加载,别到处用,否则反而会影响体验。 在使用这个特性之前,有两个设置必须做。第一个是必须要在你的组织里启用 Lightning Web Security,也叫 LWS。这是动态导入的硬性要求,没启用的话,动态组件是用不起来的。第二个是在开发阶段,我强烈建议你临时禁用浏览器的持久缓存,这样你每次修改代码,都能立即加载到最新版本,避免因为缓存导致调试起来很困惑。 接下来是组件的配置文件,也就是那个 .js-meta.xml 文件。里面必须包含 lightning__DynamicComponents 这个功能标记,并且 apiVersion 要设置为 55.0 或更高。这是让组件具备动态实例化能力的前提。 最后要注意一点关于打包和分发的支持情况:托管包里是支持动态组件的,但未锁定包,也就是 Unlocked Package,目前还不支持。所以在做 ISV 或者发布应用的时候,要根据你的包类型来决定能否使用这个特性。 总结一下,就是牢记先开 LWS,开发时关缓存,元数据配好功能标记和 API 版本,最后包类型要看清楚。这样你就能安全高效地用好动态组件了。

关键词

LWC Lightning Web Components Salesforce