Угловой: много компонентов, использующих многоразовые услуги

Я придерживаюсь руководства по стилю девиз Тодда для угловых. И в его подходе, и в подходе Джона Папы, они говорят, что у каждого компонента должны быть свои услуги, от которых они зависят.

Мой вопрос заключается в том, что происходит, когда у меня есть служба (например, getArticlesByStoreId), которую я хочу использовать из разных компонентов, которые не связаны друг с другом. Из этих руководств по стилю я пойму, что мне нужно переписать файл службы в оба компонента, но я думаю, что у меня может быть "sharedServices/" для всех этих общих служб, поэтому я не перезаписываю код.

Что бы вы, ребята, сделали в этом случае?

app/  
|--components/  
   |--comp1/  
      |--service.js  
   |--comp2/  
      |--service.js  

или же

app/  
|--components/  
   |--comp1/  
   |--comp2/  
|--services/  
   |--sharedServices/
      |--service.js

2 ответа

Хорошо, поскольку ваш вопрос заключается в том, что мне делать, я бы сделал это... структурировать свое приложение по функциям (одна из структур папок Джона Папаса). Помните, что каждому приложению может потребоваться различная структура папок. Я использую приведенную ниже структуру папок для небольших и средних приложений. Опять же, ваши потребности приложения важны здесь. Насколько вырастет ваше приложение и насколько оно будет управляемым со структурой папок, которую вы будете использовать.

app/  
    |--core
        |--login.service.js
    |--feature1/  
        |--feature1.component.js
        |--feature1.service.js  
    |--feature2/  
        |--feature2.service.js 

Мне нравится, чтобы структура папок была как можно более плоской. Полагаю, я прочитал в руководстве Джона Папаса, что структура папок не должна содержать более 2 вложенных папок. Вот статья, где он говорит это: https://johnpapa.net/angular-app-structuring-guidelines/

Я использую Angular 1.5 и компонентную архитектуру в крупномасштабном проекте. У нас следующая структура и пока все хорошо.

└─ src/app/ ├─ app.js # app entry file ├─ app.html # app template ├─ common/ ├─ common.js # common entry file └─ services/ # common services └─ components/ # where components live ├─ components.js # components entry file └─ home/ # home component ├─ home.js # home entry file (routes, configurations etc) ├─ home.component.js # home component definition ├─ home.controller.js # home controller ├─ home.service.js # home service ├─ home.scss # home styles ├─ home.html # home template └─ home.spec.js # home specs (for entry, component, and controller)

Другие вопросы по тегам