2016-06-07 39 views
11

Se corro questo:Perché angular-cli crea component/shared/index.ts?

ng g component components/blogs 

ottengo

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 

Capisco il resto, ma qual è il /blogs/shared/index.ts per? Perché un componente ha una cartella condivisa se quella cartella componente è solo per il componente?

risposta

17

L'idea del file index.ts nella directory condivisa è qualcosa chiamata botte.

L'obiettivo del barile è quello di consolidare le importazioni. Sarà esportare gli elementi contenuti all'interno condivisa per rendere le importazioni in blogs.component.ts più pulito ...

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

export class BlogsService { ... } 

app/componenti/blog /shared/blog.model.ts

export class Blog { ... } 

app/components/blogs/shared/index.ts

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

app/components/blog/blogs.component.ts

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

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

E se si può immaginare questo diventa molto più consolidata quando si aggiungono più componenti/servizi/direttive/modelli.

RIFERIMENTO Si può leggere su di barili nella Gazzetta style guide (Grazie a Günter Zöchbauer)

+2

Vedi anche https://angular.io/docs/ts/latest/glossary.html#!#B –