我一直在研究一些种子项目,所有组件似乎都有一个从该组件导出 * 的 index.ts 。我在任何地方都找不到它的实际用途?
E.g https://github.com/mgechev/angular2-seed/tree/master/src/client/app/%2Bhome https://github.com/mgechev/angular2-seed/tree/master/src/client/app/%2Bhome
Thanks
From the Angular.io v2's archived glossary https://v2.angular.io/docs/ts/latest/guide/glossary.html entry for Barrel
*:
桶是一种将多个模块的导出汇总到单个模块中的方法
便利模块。桶本身是一个重新导出的模块文件
选择其他模块的导出。
想象一下 Heroes 文件夹中的三个模块:
// 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';
我们可以在英雄文件夹中添加一个桶(按照惯例称为索引)
导出所有这些项目:
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
每个 Angular 作用域包都有一个名为 index 的桶。
也可以看看异常:无法解析所有参数 https://stackoverflow.com/questions/37997824/angular-2-di-error-exception-cant-resolve-all-parameters/38000323#38000323
* NOTE: Barrel
has been removed from more recent versions of the Angular glossary https://angular.io/guide/glossary.
UPDATE使用最新版本的 Angular,桶文件应按如下方式编辑,
export { HeroModel } from './hero.model';
export { HeroService } from './hero.service';
export { HeroComponent } from './hero.component';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)