150 votes

Différence entre service, directive et module

Je suis un débutant, je connais les bases et je m'essaye à ce cadre génial. J'ai lu beaucoup de documents et je suis de plus en plus confus. Je ne peux pas comprendre la différence entre un

  • un service
  • directif
  • module

Je vois beaucoup de composants personnalisés. Parfois, ils utilisent des directives, parfois des services. Cela commence toujours par un module. Quelqu'un peut-il expliquer par un exemple quelle est la différence entre ces trois types?

233voto

Mark Rajcok Points 85912

À partir de mes propres notes personnelles (principalement des extraits de l'docs, google les postes du groupe, et AINSI de postes):

Les Modules de

  • fournir un moyen de l'espace de noms/groupe de services, les directives, les filtres, les informations de configuration et le code d'initialisation
  • aider à éviter les variables globales
  • sont utilisés pour configurer l' $injecteur, permettant de choses définies par le module (ou le module lui-même) pour être injecté ailleurs (Injection de Dépendance des trucs)
  • Angulaire modules ne sont pas liées à CommonJS ou Require.js. Contrairement à AMD ou Require.js modules, Angulaire des modules de ne pas essayer de résoudre le problème de script charge de la commande ou paresseux script d'extraction. Ces objectifs sont orthogonaux et les deux systèmes de modules peuvent vivre côte à côte et de remplir leurs objectifs (donc la documentation de réclamation).

Services

  • sont des singletons, donc il n'y a qu'une seule instance de chaque service que vous définissez. Comme des singletons, ils ne sont pas affectés par les étendues, et, par conséquent, peut être consulté par (partagé avec) plusieurs vues/controllers/directives/autres services
  • Vous pouvez (et devriez) créer des services personnalisés lors de l'
    • deux ou plusieurs choses ont besoin d'accéder aux mêmes données (ne pas utiliser la racine de portée) ou vous voulez juste à proprement encapsuler vos données
    • vous souhaitez englobent les interactions avec, par exemple, un serveur web (étendre $ressources $ou http à votre service)
  • Les services intégrés de commencer par '$'.
  • L'utilisation d'un service, d'injection de dépendance est nécessaire sur la variable dépendante (par exemple, sur le contrôleur, ou d'un autre service, ou d'une directive).

Directives (certains des éléments ci-dessous disent essentiellement la même chose, mais j'ai trouvé que, parfois, une formulation légèrement différente aide beaucoup)

  • sont responsables de la mise à jour du DOM lors de l'état des changements de modèle
  • étendre HTML vocabulaire = enseigner HTML de nouveaux trucs.
    Angulaire est livré avec un ensemble de directives (par exemple, ng-* trucs) qui sont utiles pour développer des applications web, mais vous pouvez ajouter vos propres tels que HTML, peut être transformé en un déclarative Langage Spécifique au Domaine (DSL). E. g., l' <tabs> et <volet> éléments sur l'angle de la page d'accueil de démonstration "de la Création de Composants".
    • Non évidente intégrée dans les directives (car ils ne commencent pas par "ng"): a, forme, saisie, script, select, textarea. En vertu de l'Angulaire, toutes ces en faire plus que la normale!
  • Les Directives permettent de grouper HTML". Les Directives sont souvent mieux que ng-include. E. g., lorsque vous commencez à écrire beaucoup de code HTML avec principalement de liaison de données, refactoriser le code HTML (réutilisable) directives.
  • L'angle de compilateur vous permet de fixer le comportement de n'importe quel élément HTML ou de l'attribut et même créer de nouveaux éléments HTML ou attributs comportement personnalisé. Angulaire appelle ces comportement des extensions de directives.
    • Lorsque vous faites bouillir le tout vers le bas, une directive est juste une fonction qui s'exécute lorsque l'angle de compilateur rencontre dans les DOM.
  • Une directive est un comportement ou d'un DOM à la transformation qui est déclenché par la présence d'un attribut, un nom d'élément, le nom d'une classe, ou un nom dans un commentaire. La Directive est un comportement qui doit être déclenchée lorsque spécifiques HTML constructions sont rencontrés dans le HTML () processus de compilation. Les directives peuvent être placées dans les noms d'éléments, d'attributs, noms de classe, ainsi que les commentaires.
    • La plupart des directives sont limités à l'attribut. E. g., DoubleClick utilise uniquement l'attribut personnalisé directives.
  • voir aussi Ce qui est un angularjs directive?

Définir et groupe Angulaire choses (injection de dépendance) dans les modules.
Partager les données et les envelopper serveur web de l'interaction dans les services.
Étendre HTML et faire de manipulation du DOM dans les directives.
Et de faire des Contrôleurs en tant que "mince" que possible.

123voto

Dan Doyon Points 4081

Pensez à un module comme un lieu de fil d'un certain nombre d'autres choses, comme les directives, les services, les constantes etc. Les Modules peuvent être injectés dans d'autres modules de vous donner un haut niveau de réutilisation.

Lors de l'écriture angulaire de l'app, vous avez un haut niveau de module qui est le code de votre application (sans modèles)

les services sont essentiellement un moyen de communication entre les contrôleurs, mais vous pouvez injecter un service à l'autre. les services sont souvent utilisés comme un moyen d'accéder à vos données les magasins et les gens vont envelopper l'angulaire de l'api comme ngResource. Cette technique est utile puisqu'il a fait des tests (en particulier moqueur) assez facile. Vous pouvez avoir des services pour faire d'autres choses comme l'authentification, l'exploitation forestière, etc.

les directives sont utilisés pour la création de widgets ou d'emballage existant des choses comme des plugins jquery. Emballage des plugins existants peut être un défi, et la raison pour laquelle vous avez faire est d'établir une liaison de données bidirectionnelle entre les plugins et angulaire. Si vous n'avez pas besoin de les deux sens de la liaison de données, alors vous n'avez pas besoin de les emballer.

des directives sont également un endroit pour faire de manipulation du DOM, la capture des DOM-événements, etc. Vous ne devriez pas faire de DOM choses liées par des contrôleurs ou des services. la création de directives peut être assez complexe, à mon humble avis, je vous recommande de regarder tout d'abord à l'api pour quelque chose qui va faire ce que vous voulez faire OU demander angulaire googlegroup pour obtenir des conseils.

espérons que cette aide!

--dan

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