刚接触Cocos,如题,我尝试了很多种方案,我甚至模仿’cc’的声明文件写了一份模块声明,但依旧没有正常工作。唯一目的仅仅是希望将同一个系统的抽象封装到同一个命名空间的不同文件下,但似乎Cocos并不支持我这样做!即使通过了VS Code的标准TS语法检查,使用Cocos运行,依然会报错:找不到模块。我想请问官方是否有提供一个解决方案?
简单版本
tool_a.ts
class tool_a {...}
export default tool_a;
tool_b.ts
class tool_b{...}
export default tool_b;
tool_export.ts
export { default as a} from "./tool_a";
export { default as b} from "./tool_b";
tool.ts
import * as tool from "./tool_export";
export default tool;
我的框架就是用的这种方式封装的
3赞
独立成ts 项目, 编译成js到项目中引用,导出申明文件
最新支持 导入映射,import map,基本可以解决你这个问题,我认为目前能用的最理想方便的方式了
大佬可否分享下框架?
非常好的办法。此框架,如果在一个文件中export项目中所有的公共接口,会不会导致包体变大和运行速度变慢?
这种方式导出的都会被打包
用起来还挺不错,接近命名空间的使用体验
这种方式注意两个点,
- tool_export 内的模块互相引用直接 import 指定的模块而不是 tool.ts,否则容易会造成循环引用
- tool_export 内的模块最好禁止引用外部的模块,否则 tool 引用的模块再引用 tool 时会造成循环引用
是否支持同名的类 比如我原来工程里面有一个类A 我导入模块也有一个类A 如何避免冲突。
文件不同名就行了,类可以被集合无所谓,就像 Test 和 Tool.Test 的区别