Angular 所有index.ts都用于什么?

Angular 所有index.ts都用于什么?,angular,Angular,我一直在看一些种子项目,所有组件似乎都有一个从该组件导出*的index.ts。我到处都找不到它的真正用途 例如 感谢桶的条目中的: 桶是一种将多个模块的输出汇总到单个模块的方法 便利模块。桶本身是一个重新导出的模块文件 其他模块的选定导出 想象一下英雄文件夹中有三个模块: // heroes/hero.component.ts export class HeroComponent {} // heroes/hero.model.ts export class Hero {} // heroe

我一直在看一些种子项目,所有组件似乎都有一个从该组件导出*的index.ts。我到处都找不到它的真正用途

例如

感谢
桶的条目中的:

桶是一种将多个模块的输出汇总到单个模块的方法 便利模块。桶本身是一个重新导出的模块文件 其他模块的选定导出

想象一下英雄文件夹中有三个模块:

// heroes/hero.component.ts
export class HeroComponent {}

// heroes/hero.model.ts
export class Hero {}

// heroes/hero.service.ts
export class HeroService {}
如果没有桶,消费者需要三种进口声明:

import { HeroComponent } from '../heroes/hero.component.ts';
import { Hero }          from '../heroes/hero.model.ts';
import { HeroService }   from '../heroes/hero.service.ts';
我们可以在heroes文件夹中添加一个桶(按约定称为索引) 出口所有这些物品的:

export * from './hero.model.ts';   // re-export all of its exports
export * from './hero.service.ts'; // re-export all of its exports
export { HeroComponent } from './hero.component.ts'; // re-export the named thing
现在消费者可以从桶里进口它需要的东西

import { Hero, HeroService } from '../heroes'; // index is implied
角度范围的包都有一个名为index的桶

另见


*注意:
桶已从中移除

更新 对于Angular的最新版本,桶形文件应按如下所示进行编辑:


index.ts
类似于nodejs中的
index.js
,或者
index.html
是网站宿主

因此,当您从“directory\u name”中说
import{}
时,它将在指定目录中查找
index.ts
,并导入导出到那里的任何内容

例如,如果您有
calculator/index.ts
as

export function add() {...}
export function multiply() {...}
你能行

import { add, multiply } from './calculator';

index.ts
帮助我们把所有相关的东西放在一起,我们不需要担心源文件名

我们可以使用源文件夹名称导入所有内容

import { getName, getAnyThing } from './util';
这里的util是文件夹名而不是文件名,它具有重新导出所有四个文件的
index.ts

export * from './util1';
export * from './util2';
export * from './util3';
export * from './util4';

当我执行相当于从“./hero.model.ts”导出的
export*时,我会收到一条类似“导入路径不能以“.ts”结尾”的消息,因此我只需更改为从“./hero.model”导出的
export*。同样值得重复你对@TheRedPea的评论谢谢你的提示。我不想更改它,因为它是链接页面(早期版本)的引用。你知道有没有任何帮助程序库或命令可以自动生成index.js?@AlexanderAbakumov由于组件、指令或管道必须属于一个且仅属于一个模块,那么通过在模块中声明上述任何一项,当你导入该模块时,你基本上实现了相同的目标。。。假设您也从模块中导出了它们。@Qwerty我很确定这适用于摇树,但使用桶很久以前就从建议的实践中删除了,我认为当1.0之前引入的模块与本讨论相关时,在github上。在将桶形文件与角形文件一起使用之前,您可能需要通读它project@FlowerScape在创建库或模块级代码时,通过索引进行导出特别有用,这样最终用户可以减少冗长的导入。它还隐藏了导入的code.Refactoring的任何不必要/混乱的实现细节。您可以更改代码,例如重命名文件,只要您保持index.ts中的导出不变。
export * from './util1';
export * from './util2';
export * from './util3';
export * from './util4';