Мне интересно, какие именно декораторы есть в AngularJS. В Интернете не так много информации для декораторов, за исключением рекламы в документации AngularJS и краткого (хотя и интересного) упоминания в видео на YouTube .
Как говорят ребята из Angular, декоратор это:
Оформление сервиса, позволяет декоратору перехватить создание экземпляра сервиса. Возвращенный экземпляр может быть исходным экземпляром или новым экземпляром, который делегирует исходному экземпляру.
Я действительно не знаю, что это значит , и я не уверен, почему вы должны отделить эту логику от самого сервиса. Например, если бы я хотел вернуть что-то другое в других условиях, я бы просто передавал различные аргументы соответствующим функциям или использовал другую функцию, разделяющую это частное состояние.
Я все еще своего рода AngularJS noob, так что я уверен, что это просто невежество и / или вредные привычки, которые я подхватил.
источник
Декораторы позволяют нам выделять сквозные проблемы и позволяют сервисам сохранять принцип единой ответственности, не беспокоясь об «инфраструктурном» коде.
Практическое использование декораторов:
Во всех этих случаях мы ограничиваем код в сервисе своей основной ответственностью.
источник
decorator
может перехватывать экземпляр службы, созданныйfactory, service, value, provider
, и дает опции для изменения некоторых,instance(service)
которые иначе не конфигурируются / с опциями.Например, он также может предоставить макеты для тестирования
$http
.источник
directive
определения, представленные Беном НаделемПроще говоря, мы можем сказать, что это как метод расширения. Например У нас есть класс, и у него есть два метода, и во время выполнения мы хотим добавить в него больше методов, чем используем Decorator.
Мы не можем использовать $ provide.decorator с константами, потому что мы не можем изменить константы, для которых они имеют свойство только для чтения.
источник
Вкратце декораторы можно описать следующим образом:
Он использует
$provide
сервис под углом и изменяет или заменяет реализацию другого сервисаПример:
Приложения
В дополнение к ответу @JBland.
Широкие языковые настройки приложения: -
Вы можете найти пример здесь
Изменение поведения по умолчанию и существующей реализации сервиса с помощью углового сервиса: -
Вы можете найти образец здесь
Переключение поведения функции в разных средах.
источник