Разница между AngularJS(1.x) и Angular (2/4) Декоратором
Я начинаю с Angular версии 2 и наткнулся на @Component Decorator. Я мог бы напомнить, что AngularJS(1.x) также имел концепцию Decorator, в которой он использовался для расширения / изменения реализации по умолчанию любого сервиса.
Похоже, что в Angular 2 вместо того, чтобы изменять / расширять функциональность по умолчанию, они добавляют метаданные к чему-то, начиная от Class(используя @Component) до свойства (используя декораторы Input()/Output()), и этот список можно продолжить для Pipes и услуги и т. д.
Может ли кто-нибудь представить различия, если таковые имеются, с точки зрения концепции / фактической работы.
Благодарю. Дипак
1 ответ
AngularJS
AngularJS декоратор - это ООП шаблон.
Он редко используется в AngularJS для расширения поведения встроенных объектов. Например, следующая реализация использует $provider.decorator()
перехватить $log.debug()
звонки и динамическое добавление информации о метках времени.
$provide.decorator('$log', [
"$delegate", function ($delegate) {
// Save the original $log.debug()
var debugFn = $delegate.debug;
$delegate.debug = function () {
var args = [].slice.call(arguments),
now = DateTime.formattedNow();
// Prepend timestamp
args[0] = supplant("{0} - {1}", [now, args[0]]);
// Call the original with the output prepended with formatted timestamp
debugFn.apply(null, args)
};
return $delegate;
}
]);
угловатый
Угловые декораторы - это особенность языка, которая:
предлагает удобный декларативный синтаксис для изменения формы объявлений классов. Эта возможность может использоваться для множества целей, включая изменение дескриптора объявленного члена (@nonconfigurable/@enumerable), добавление метаданных (как используется Angular) и многое другое. Это позволяет прикрепить доступ
Angular использует его для присоединения метаданных к классу, члену класса (свойству) и параметрам метода. Чтобы увидеть, как это делает Angular, прочитайте " Реализация декоратора пользовательских компонентов в Angular".
В версиях больше 4 Angular будет уходить от динамической оценки декораторов во время выполнения и будет использовать статический анализ кода для извлечения метаданных, указанных в дескрипторах декоратора.