Почему angular -cli создает компонент/shared/index.ts?

Если я запустил это:

ng g component components/blogs

Я получаю

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

Я понимаю остальное, но для чего нужен /blogs/shared/index.ts? Почему компонент имеет общую папку, если эта папка компонента предназначена только для компонента?

Ответ 1

Идея файла index.ts в общем каталоге - это то, что называется баррелем.

Цель барреля - консолидировать импорт. Он будет экспортировать элементы, содержащиеся в общей папке, чтобы сделать импорт в blogs.component.ts чистом...

приложения/компоненты/блоги/Shared/blogs.service.ts

export class BlogsService { ... }

приложения/компоненты/блоги/Shared/blog.model.ts

export class Blog { ... }

приложения/компоненты/блоги/Shared/index.ts

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

приложения/компоненты/блоги/blogs.component.ts

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

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

И если вы можете себе представить, что это станет намного более консолидированным, поскольку вы добавите больше компонентов/сервисов/директив/моделей.

ССЫЛКА Вы можете прочитать о бочках в официальном руководстве по стилю (спасибо Гюнтеру Цохбауэру)