添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

要想实现真正的动态加载或者说按需加载,Creator 必须要知道你会动态加载哪些模块?因为它需要把所有有可能加载的模块都编译好。大家可能会说,那不就是项目里 assets/ 下面的所有模块吗?并不。Creator 支持非 assets/ 下的模块,例如,npm 里的模块,例如项目根目录下 libs-xxxxxxx/ 下面的模块。这些 Creator 无从知晓。

即使我们知道了哪些模块会被加载,比如我们破釜沉舟,扫描项目下的所有 .ts .js 把它们都视为有可能加载的模块。我们还需要解决另一个问题——场景加载时候,哪些模块是需要的?例如,你一个模块里写了一个组件,这个组件在你第一个场景里用到了,那么 Creator 必须要在加载你这个场景之前加载好模块。场景和模块之间的关系是没有关联的,目前。

因此,现在 Creator 的做法就是,一股脑把所有模块都加载了。

能否换一种角度看这个需求,就是希望能 以类名来导入某个类所在的模块,而不用知道它所在模块的路径 ?如果可以,我建议是用 导入映射 · Cocos Creator 来实现。

假设有两个类 A B ,它们分别在 assets/a.ts assets/b.ts 下面,并且作为 默认导出 。那可以创建一个导入映射,放在项目根目录,名为 import-map.json ,内容如下:

"imports": { "A": "./assets/a.ts", "B": "./assets/b.ts"

然后按照文档中的步骤,把它设置到项目设置中。

然后就这样使用:

import A from 'A'; // 类 A
import B from 'B'; // 类 B