148 votes

AngularJS - Que sont les "décorateurs" et comment sont-ils utilisés?

Je suis curieux de savoir ce qu'est exactement les décorateurs sont en AngularJS. Il n'y a pas beaucoup d'informations en ligne pour les décorateurs d'économiser pour un texte de présentation dans le AngularJS documentation et une brève (mais intéressant) mentionner dans une vidéo youtube.

Comme l'angle de gars mettre un décorateur est:

La décoration de service, permet à l'décorateur d'intercepter le service création de l'instance. Le retour de l'instance peut être l'instance d'origine, ou une nouvelle instance qui délègue à l'instance d'origine.

Je ne sais pas vraiment ce que cela signifie, et je ne suis pas sûr pourquoi vous séparer de cette logique que le service lui-même. Par exemple, si je voulais revenir à quelque chose de différent dans des conditions différentes, je voudrais juste passer les différents arguments de fonctions ou d'utiliser une autre fonction de partage privé de l'état.

Je suis toujours en sorte d'AngularJS n00b, donc je suis sûr que c'est juste de l'ignorance et/ou les mauvaises habitudes que j'ai ramassé.

219voto

tamakisquare Points 3338

Un bon exemple d'utilisation de $provide.decorator est lorsque vous devez modifier légèrement un service tiers / en amont, sur lequel dépend votre module, tout en laissant le service intact (parce que vous n'êtes pas le propriétaire / mainteneur du service). Voici une démonstration sur plunkr.

66voto

JBland Points 740

Les décorateurs de nous permettre de séparer les sujets transversaux et de permettre aux services de préserver PRS sans se soucier de "l'infrastructure" du code.

Les utilisations pratiques de la décorateurs:

  • La mise en cache: si nous avons un service qui rend potentiellement coûteux HTTP appels, nous pouvons conclure que le service dans une mise en cache décorateur qui vérifie le stockage local avant de faire l'appel externe.
  • Débogage/Suivi: l'interrupteur en fonction de votre développement et de production de configuration qui décore vos services avec le débogage ou le traçage des wrappers.
  • Limitation : wrap souvent déclenché des appels dans un rebond wrapper. Nous permet d'interagir facilement avec un taux limité de services, par exemple.

Dans tous ces cas, nous limitons le code dans le service de sa responsabilité principale.

10voto

Daiwei Points 1941

decorator peut intercepter une instance de service créée par factory, service, value, provider et donne les options pour modifier certains instance(service) qui ne sont pas configurables / avec des options.

Il peut également fournir des instances de simulation à des fins de test, par exemple $http .

9voto

Joe King Points 924

Voici un autre bel exemple de Scott Allen démontrant l'utilisation de $ decorator. C'est l'un des exemples les plus succincts et les plus simples que j'ai vus jusqu'ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X