Задать вопрос
@Urukhayy

Как автоматизировать «копипасту» во front-end Angular 4?

В приложении на Angular 4 очень много похожих компонентов , во многих из них таблицы с данными и одинаковые кнопочки по удалению, добавлению и редактированию этих таблиц. Также похожи и формы по созданию записей таблиц (плюс-минус пару полей). И для того чтобы сделать все разделы приложения, приходится пачками копировать эти компоненты и просто изменять их названия, так как 70% начинки файлов одинаковое, разные лишь количество полей и названия переменных. Как можно автоматизировать рутинные процессы? Какая архитектура не имеет "копипасты"?
При этом имеется Angular-CLI, но все равно придется копипастить код из других компонентов.
  • Вопрос задан
  • 413 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
0X12eb
@0X12eb
Вы почти ответили сами на свой вопрос.
Реализуйте абстрактные компоненты, будь то формы или таблицы с настраиваемым функционалом (необходимые параметры передавайте в компонент инпутом, колбеки возвращайте оутпутом)
Если требуются уникальные случаи абстрактных компонентов - наследуйтесь от ранее созданных и уже реализуйте уникальную часть для них.
В итоге у Вас получится один абстрактный компонент. скажем, для таблиц где Вы прогоните все параметры, пришедшие из родительского компонента и отрендерите его, постепенно будете дописывать общие компоненты по мере необходимости.
В конце концов будут настраиваемые компоненты модалок, нотификаторов, аплоадеров, таблиц, форм и т.д. Которые заинкапсулируют в себе весь необходимый функционал и принимающие лишь настройки для тех или иных случаев реализаций.
Ответ написан
Комментировать
К сожалению, в Angular 2+ не предусмотрено механизма наследования компонентов. Поэтому - либо универсальные компоненты, которые "могут всё" и настраиваются через параметры, либо бейте ваши компоненты на более мелкие и делайте много разных компонентов из этих маленьких (т.е. решайте вопрос через агрегацию).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы