2016-06-07 12 views
11

Wenn ich dies auszuführen:Warum erstellt eckig-cli component/shared/index.ts?

ng g component components/blogs 

ich

app 
+--components 
| +--blogs 
| | +--shared 
| | | +--index.ts    // what's this for? 
| | +--blogs.component.css 
| | +--blogs.component.html 
| | +--blogs.component.ts 
| | +--blogs.component.spec.ts // unit tests! 
| | +--index.ts 

ich den Rest zu verstehen, aber was ist die /blogs/shared/index.ts für? Warum hat eine Komponente einen freigegebenen Ordner, wenn dieser Komponentenordner nur für die Komponente bestimmt ist?

Antwort

17

Die Idee der index.ts Datei im gemeinsamen Verzeichnis ist etwas, das ein Fass genannt wird.

Das Ziel des Fasses es, Importe zu konsolidieren. Es werden die Elemente innerhalb geteilt enthaltenen exportieren die Einfuhren in blogs.component.ts sauberer ...

app/components/Blogs/shared/blogs.service.ts

export class BlogsService { ... } 

app/components/Blogs zu machen /shared/blog.model.ts

export class Blog { ... } 

app/components/Blogs/shared/index.ts

export * from './blogs.service'; 
export * from './blog.model'; 

app/Komponenten/blogs/blogs.component.ts

// without barrel 
import { BlogsSerivce } from './shared/blogs.service'; 
import { Blog } from './shared/blog.model'; 

// with barrel 
import { BlogService, Blog } from './shared'; 

Und wenn man sich vorstellen kann dies viel mehr wird konsolidiert, wie Sie mehr Komponenten/Dienstleistungen/Richtlinien/Modelle hinzufügen.

BEZUG Sie können über Fässer in der offiziellen style guide (Danke an Günter Zöchbauer) lesen

+2

Siehe auch https://angular.io/docs/ts/latest/glossary.html#!#B –