我读了chart.js源文件,发现下面几行:
export * from './controllers/index.js';
export * from './core/index.js';
export * from './elements/index.js';
export * from './platform/index.js';
export * from './plugins/index.js';
export * from './scales/index.js';
import * as controllers from './controllers/index.js';
import * as elements from './elements/index.js';
import * as plugins from './plugins/index.js';
import * as scales from './scales/index.js';
export {
controllers,
elements,
plugins,
scales,
};
我对***import * 这一行有一点理解,但不是很确定,因为控制器来自'./controllers/index.js'***;然后将其导出为不同的简单名称*controllers***。
但是为什么*从'./controllers/index.js'导出;它似乎做重复的事情作为导入/导出相同的包。
我发现很多ts脚本都是这样做的。有人能给予一下这段代码的好处/原因吗?
这不会导致任何依赖循环问题吗?
明白了。我看到很多例子都是这样做的。我认为它是基于TS的一些惯例。
1条答案
按热度按时间gopyfrb31#
他们确实进口/出口同样的东西,* 但方式略有不同 *。
这个
将以原始导出名称重新导出来自该其他文件的所有导出。例如,如果该文件具有
export const foo = 'foo';
,则上面的行将创建名为foo
的命名导出。它允许通过此文件使用controllers
:但是这个
而是将所有的导入放入一个命名的导出中,一个名为
controllers
的命名空间对象。它允许通过以下文件使用controllers
:所以它是在重复导出,但这很可能是故意的,这样模块的消费者就会发现有更多的选择是很方便的。这样的重复不是"必要的",只是他们决定使用的一个设计选择。
这不会导致任何依赖循环吗?
不,没有循环依赖。