„AngularJS“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
+Navigationsleiste |
Linkvorschlag-Funktion: 1 Link hinzugefügt. |
||
(20 dazwischenliegende Versionen von 18 Benutzern werden nicht angezeigt) | |||
Zeile 6: | Zeile 6: | ||
| Maintainer = [[Google Inc.]] |
| Maintainer = [[Google Inc.]] |
||
| Hersteller = Google Inc., [[Online-Community]] |
| Hersteller = Google Inc., [[Online-Community]] |
||
| Erscheinungsjahr = |
| Erscheinungsjahr = <!-- von Wikidata --> |
||
| AktuelleVersion = <!-- von Wikidata --> |
| AktuelleVersion = <!-- von Wikidata --> |
||
| AktuelleVersionFreigabeDatum = <!-- von Wikidata --> |
| AktuelleVersionFreigabeDatum = <!-- von Wikidata --> |
||
Zeile 13: | Zeile 13: | ||
| Lizenz = [[MIT-Lizenz]] |
| Lizenz = [[MIT-Lizenz]] |
||
| Deutsch = nein |
| Deutsch = nein |
||
| Website = [ |
| Website = [https://www.angularjs.org/ www.angularjs.org] |
||
}} |
}} |
||
'''AngularJS''' (zur Abgrenzung vom Nachfolger [[Angular]] (Version 2 und höher) auch '''AngularJS 1''' oder '''Angular 1''' bezeichnet) ist ein [[Clientseitige Anwendung|clientseitiges]] [[JavaScript]]-[[Webframework]] zur Erstellung von [[Single-Page-Webanwendung]]en nach einem [[Model View ViewModel|Model-View-ViewModel]]-Muster. Die [[Softwareentwicklung]] und das [[Komponententest]]en können damit vereinfacht werden. Es |
'''AngularJS''' (zur Abgrenzung vom Nachfolger [[Angular]] (Version 2 und höher) auch '''AngularJS 1''' oder '''Angular 1''' bezeichnet) ist ein [[Clientseitige Anwendung|clientseitiges]] [[JavaScript]]-[[Webframework]] zur Erstellung von [[Single-Page-Webanwendung]]en nach einem [[Model View ViewModel|Model-View-ViewModel]]-Muster. Die [[Softwareentwicklung]] und das [[Komponententest]]en können damit vereinfacht werden. Es wurde als [[Open Source|Open-Source]]-[[Framework]] vom [[Vereinigte Staaten|US-amerikanischen]] Unternehmen [[Google Inc.]] publiziert. Der Long Term Support (LTS) wurde am 31. Dezember 2021 eingestellt.<ref>[https://blog.angular.io/stable-angularjs-and-long-term-support-7e077635ee9c Stable AngularJS and Long Term Support]</ref> |
||
Im September 2016 wurde die stark verbesserte, nicht rückwärts-kompatible Version [[Angular 2]] herausgegeben.<ref> |
Im September 2016 wurde die stark verbesserte, nicht rückwärts-kompatible Version [[Angular 2]] herausgegeben.<ref>{{Webarchiv|url=https://www.agriya.com/blog/2016/09/27/angularjs-is-no-more-the-future-of-typescript-and-angular-2/ |wayback=20170131171244 |text=AngularJS is No More – The Future of TypeScript and Angular 2? |archiv-bot=2023-03-05 14:14:18 InternetArchiveBot }}</ref> Der Begriff ''AngularJS'' wird nunmehr eingeschränkt auf Version 1 verwendet, ''Angular'' ohne Zusatz nur für die höheren Versionen. |
||
== Konzept == |
== Konzept == |
||
Die Philosophie von AngularJS basiert auf der Annahme, dass deklarative Programmierung (in [[Hypertext Markup Language|HTML]]) verwendet werden sollte, um Benutzeroberflächen zu gestalten und Softwarekomponenten miteinander zu verbinden, während [[imperative Programmierung]] (in JavaScript in Form von AngularJS) für die Umsetzung von Programmlogik verwendet werden sollte. |
|||
{{Allgemeinverständlichkeit}} |
|||
AngularJS basiert auf der clientseitigen Generierung von [[Hypertext Markup Language|HTML]]-Ansichten und Erweiterungen des Vokabulars von HTML. Hierdurch kann Funktionalität im Rahmen der View abgebildet werden, ohne auf [[Document Object Model|DOM]]-Manipulation via [[jQuery]] zurückgreifen zu müssen. AngularJS behandelt die Datenvalidierung im Rahmen von Eingabeformularen als Funktionalität der View. Hierbei wird der Gedanke der [[HTML5]]-Form-Validation fortgesetzt und durch AngularJS in eine Webbrowser-unabhängige Javascript-Variante implementiert. Diese Vorgehensweise besitzt keine Funktionalitäten zur Abbildung von Fachkonzept-Daten (Model) in Form einer clientseitigen Entitätenverwaltung. In anderen [[Single-Page-Webanwendung|SPA]]-Frameworks stellt dies einen typischen Bereich zur Datenvalidierung dar. Stattdessen werden die Fachkonzeptdaten häufig direkt in einem ViewModel abgelegt. |
|||
Der Aufbau von AngularJS orientiert sich lose am [[Model View Controller|MVC]]-Muster, insbesondere dem MVVM-Muster, nach welchem eine Software in Models (Datenmodelle), Views (Benutzeroberfläche) und ViewModels (zur Veränderung der Benutzeroberfläche nach Interaktion mit den Daten) gegliedert wird.<ref>{{Internetquelle |autor=Golo Roden |url=https://www.heise.de/developer/artikel/Webanwendungen-mit-AngularJS-1955101.html?seite=all |titel=Webanwendungen mit AngularJS |hrsg=Heise Online |datum=2013-09-13 |abruf=2019-09-02 |sprache=de}}</ref> |
|||
Die Strukturierung eines AngularJS-Webclients erfolgt auf Basis von Modulen, View-Templates, Controllern, Scopes, Filtern und Providern (Factory, Service). Für die Zusammenführung dieser Elemente ist der Dependency-Container von AngularJS verantwortlich. Hierdurch entsteht eine lose gekoppelte Anwendung, welche aus wiederverwendbaren Teilkomponenten besteht. Unter Berücksichtigung der [[ISO/IEC 25000|ISO/IEC 25010]] können so wartbare Anwendungen realisiert werden. |
|||
AngularJS besitzt einen Mechanismus zur Datenbindung nach dem MVVM-Muster. Hierdurch kann Programmcode zur Synchronisation zwischen View und Anwendungslogik eingespart werden. Durch deklarative Beschreibungen von Datenbindungen innerhalb der View leitet AngularJS eine bidirektionale Änderungsverfolgung der Werte ein. Dies kann auch starke Auswirkungen auf die Performance einer SPA haben. Technisch gesehen befindet sich AngularJS hierzu in einer Eventschleife um jede Änderung abzufangen, auszuwerten und ggf. eine Aktualisierung der View zu initiieren. Nicht editierbare Daten können mittels AngularJS' One-Time-Binding von weiteren Aktualisierungen ausgeschlossen werden. |
|||
AngularJS erweitert das Vokabular von HTML um neue Tags und Parameter, die ''Direktiven'', aus welchen zur Laufzeit Funktionalität generiert wird. Dies geschieht über sogenannte ''Datenbindungen'', durch welche einzelne Elemente einer Webapplikation mit einem Datensatz verkoppelt werden. Interagiert der Benutzer mit der Applikation, können die Datensätze verändert oder anders dargestellt werden, etwa durch die Sortierung einer Tabelle nach einem anderen Kriterium. So kann Funktionalität erzeugt werden, ohne auf [[Document Object Model|DOM]]-Manipulation via [[jQuery]] oder ähnlicher [[Softwarebibliothek|Bibliotheken]] zurückzugreifen. |
|||
Durch das mitgelieferte [[Mock-Objekt|Mocking]]-Modul können Standardfunktionalitäten wie ''$http'' durch Attrappen ersetzt werden. Dies ermöglicht die Umsetzung von isolierten [[Testfall|Testfällen]]. Eine Testbarkeit von entwickelten Direktiven ist ebenfalls gegeben. |
|||
Die verwendeten Datenmodelle werden nicht in AngularJS selbst definiert, sondern übernommen wie sie sind. Insbesondere gibt es keine clientseitige Entitätenverwaltung, wie in anderen Single-Page-Frameworks. |
|||
AngularJS-Applikationen werden in verschiedene Module untergliedert: |
|||
* '''Templates''' definieren den Aufbau der [[Grafische Benutzeroberfläche|Benutzeroberfläche]]. |
|||
* '''Controller''' enthalten die Programmlogik. |
|||
* '''Scopes''' verwalten die Daten, auf die ein Programmbaustein zugreifen kann. |
|||
* '''Filter''' sortieren die Daten dynamisch nach vorgegebenen Kriterien. |
|||
* '''Provider''' stellen weitere Funktionalitäten (üblicherweise unter anderem die Interaktion mit einem [[Front-End und Back-End|Backend]]) zur Verfügung. |
|||
Diese Module werden vom sogenannten ''Dependency-Injection-Container'' beim Aufruf der Applikation durch [[Bootstrapping (Programmierung)|Bootstrapping]] zu einem lose gekoppelten Programm zusammengeführt, welches aus wiederverwertbaren Teilkomponenten besteht. So entsteht eine wartbare Software im Sinne der [[ISO/IEC 25000|ISO/IEC 25010]]. Technisch gesehen ist eine solche Anwendung eine Eventschleife, die jede Änderung abfängt, auswertet und ggf. Aktualisierungen in der Präsentation initiiert. Nichtveränderliche Daten können mittels eines ''One-Time-Bindings'' einmalig gebunden und von weiteren Aktualisierungen ausgeschlossen werden. |
|||
Ein mitgeliefertes [[Mock-Objekt|Mocking]]-Modul erlaubt es Standardfunktionalitäten, wie die Komponente zum Durchführen von HTTP-Anfragen, durch Attrappen zu ersetzen und so isolierte [[Testfall|Testfälle]] umzusetzen, ohne tatsächlich Anfragen zu verschicken oder Daten zu verändern. Dadurch ist die isolierte Testbarkeit der einzelnen Module gegeben.<ref>{{Internetquelle |url=https://docs.angularjs.org/api/ngMock |titel=API Reference / ngMock |werk=angularjs.org |abruf=2019-09-02 |sprache=en}}</ref> |
|||
== Struktur == |
== Struktur == |
||
Zeile 63: | Zeile 75: | ||
Services enthalten die Geschäftslogik und binden externe Ressourcen – etwa [[Representational State Transfer|REST]]-Webservices – ein. Services werden als [[Singleton (Entwurfsmuster)|Singleton]] instanziiert. |
Services enthalten die Geschäftslogik und binden externe Ressourcen – etwa [[Representational State Transfer|REST]]-Webservices – ein. Services werden als [[Singleton (Entwurfsmuster)|Singleton]] instanziiert. |
||
Services können selbst programmiert werden oder von Drittanbietern übernommen werden. Das AngularJS-Framework stellt aber bereits zahlreiche Services (erkennbar am $-Präfix) zur Verfügung. Dazu zählen beispielsweise <code>$http</code> und <code>$resource</code>, die zum Durchführen von [[Ajax (Programmierung)| |
Services können selbst programmiert werden oder von Drittanbietern übernommen werden. Das AngularJS-Framework stellt aber bereits zahlreiche Services (erkennbar am $-Präfix) zur Verfügung. Dazu zählen beispielsweise <code>$http</code> und <code>$resource</code>, die zum Durchführen von [[Ajax (Programmierung)|Ajax]]-Anfragen dienen. Beide greifen intern auf das XMLHttpRequest-Objekt zu und unterscheiden sich im Abstraktionsgrad. Während <code>$http</code> beliebige HTTP-Anfragen durchführen kann, ist <code>$resource</code> auf REST-Services spezialisiert. |
||
=== Kommunikation zwischen Scopes === |
=== Kommunikation zwischen Scopes === |
||
Zeile 71: | Zeile 83: | ||
=== Routen in Single-Page-Applikationen === |
=== Routen in Single-Page-Applikationen === |
||
In Single-Page-Applikationen werden mit Routen die Zuordnung von [[Uniform Resource Locator|URLs]] zu spezifischen Ansichten festgelegt. Zu diesem Zweck stellt AngularJS das <code>ngRoute</code>-Modul<ref>{{Internetquelle |url= |
In Single-Page-Applikationen werden mit Routen die Zuordnung von [[Uniform Resource Locator|URLs]] zu spezifischen Ansichten festgelegt. Zu diesem Zweck stellt AngularJS das <code>ngRoute</code>-Modul<ref>{{Internetquelle |url=https://docs.angularjs.org/api/ngRoute |titel=ngRoute |werk=AngularJS Developer Documentation |sprache=en |zugriff=2013-10-02}}</ref> bereit. Damit können innerhalb der globalen HTML-Vorlage verschiedene Ansichten (HTML-Fragmente) dynamisch in ein Element mit der <code>ng-view</code>-Direktive<ref>{{Internetquelle |url=https://docs.angularjs.org/api/ngRoute.directive:ngView |titel=ngView |werk=AngularJS Developer Documentation |sprache=en |zugriff=2013-10-02}}</ref> nachgeladen werden. |
||
Dabei kann man nur eine einzelne <code>ng-view</code>-Direktive pro Seite angeben. Abhilfe schafft hier der alternative [[Benutzerschnittstelle|UI]]-Router des AngularUI-Projekts, dessen Funktionsumfang weitaus größer ist<ref>{{Internetquelle |url= |
Dabei kann man nur eine einzelne <code>ng-view</code>-Direktive pro Seite angeben. Abhilfe schafft hier der alternative [[Benutzerschnittstelle|UI]]-Router des AngularUI-Projekts, dessen Funktionsumfang weitaus größer ist<ref>{{Internetquelle |url=https://angular-ui.github.io/ |titel=AngularUI for AngularJS |zugriff=2014-08-27 |sprache=en}}</ref><ref>{{Internetquelle |url=http://jswiki.de/UI-Router |titel=UI-Router – JsWiki.de, das deutsche Wiki rund um JavaScript |zugriff=2015-03-19 |sprache=de |archiv-bot=2019-04-22 19:33:03 InternetArchiveBot |offline=ja |archiv-url=https://web.archive.org/web/20150402105954/http://jswiki.de/UI-Router |archiv-datum=2015-04-02 }}</ref><ref>{{Internetquelle |url=https://www.heise.de/developer/artikel/Verschachtelte-Ansichten-mit-AngularJS-1857240.html |titel=Verschachtelte Ansichten mit AngularJS |werk=Heise Developer |hrsg=[[Verlag Heinz Heise]] |datum=2013-05-06 |zugriff=2013-10-02 |autor=Golo Roden |sprache=de}}</ref>, sowie das Modul ''Angular-Route-Segment'', welches leichtgewichtiger ist und die Schnittstelle des vorhandenen AngularJS-Routers lediglich erweitert.<ref>{{Internetquelle |url=http://angular-route-segment.com/ |titel=angular-route-segment.com |zugriff=2015-03-19 |sprache=en}}</ref><ref>{{Internetquelle |url=http://jswiki.de/Angular-Route-Segment |titel=Angular-Route-Segment – JsWiki.de, das deutsche Wiki rund um JavaScript |zugriff=2015-03-19 |sprache=de |archiv-bot=2019-04-22 19:33:03 InternetArchiveBot |offline=ja |archiv-url=https://web.archive.org/web/20150402151910/http://jswiki.de/Angular-Route-Segment |archiv-datum=2015-04-02 }}</ref> |
||
Das <code>$location</code>-Objekt<ref>{{Internetquelle |url= |
Das <code>$location</code>-Objekt<ref>{{Internetquelle |url=https://docs.angularjs.org/guide/dev_guide.services.$location |titel=Using $location |werk=AngularJS Developer Documentation |sprache=en |zugriff=2013-10-02}}</ref> erlaubt die direkte Verarbeitung der Browser-URL, so dass eine Seitennavigation simuliert werden kann. |
||
== Hallo-Welt-Programm == |
== Hallo-Welt-Programm == |
||
Zeile 81: | Zeile 93: | ||
In <code>Default.html</code>: |
In <code>Default.html</code>: |
||
<syntaxhighlight lang=" |
<syntaxhighlight lang="html"> |
||
<!DOCTYPE html> |
<!DOCTYPE html> |
||
<html> |
<html> |
||
Zeile 114: | Zeile 126: | ||
== Angulardart == |
== Angulardart == |
||
Mit Angulardart ist eine Version für die Programmiersprache [[Dart (Programmiersprache)|Dart]] verfügbar. Angulardart lehnt sich eng an AngularJS an, wobei die zusätzlichen Möglichkeiten von Dart wie Metadaten, Typen und Klassen genutzt werden.<ref>[https://angulardart.org/ AngularDart – Superheroic MVW Framework for Dart]</ref><ref>[ |
Mit Angulardart ist eine Version für die Programmiersprache [[Dart (Programmiersprache)|Dart]] verfügbar. Angulardart lehnt sich eng an AngularJS an, wobei die zusätzlichen Möglichkeiten von Dart wie Metadaten, Typen und Klassen genutzt werden.<ref>[https://angulardart.org/ AngularDart – Superheroic MVW Framework for Dart]</ref><ref>[https://www.golem.de/news/angulardart-angularjs-auf-dart-portiert-1311-102579.html ''ANGULARDART – AngularJS auf Dart portiert''.] golem.de, 6. November 2013.</ref> |
||
== Siehe auch == |
== Siehe auch == |
||
Zeile 146: | Zeile 158: | ||
== Weblinks == |
== Weblinks == |
||
{{Commonscat}} |
{{Commonscat|audio=0|video=0}} |
||
* [https://angularjs.org/ Offizielle Webpräsenz von AngularJS] (englisch) |
* [https://angularjs.org/ Offizielle Webpräsenz von AngularJS] (englisch) |
||
* [ |
* [https://angular.de/ Inoffizielle deutschsprachige Website zu AngularJS] |
||
== Einzelnachweise == |
== Einzelnachweise == |
||
Zeile 156: | Zeile 168: | ||
[[Kategorie:JavaScript-Bibliothek]] |
[[Kategorie:JavaScript-Bibliothek]] |
||
[[Kategorie:Google]] |
[[Kategorie:Google]] |
||
{{Navigationsleiste Google-Produkte}} |
Aktuelle Version vom 30. Juni 2025, 20:11 Uhr
AngularJS
| |
---|---|
![]() | |
Basisdaten
| |
Hauptentwickler | Google Inc. |
Entwickler | Google Inc., Online-Community |
Erscheinungsjahr | 20. Oktober 2010 |
Aktuelle Version | 1.8.3[1][2] (7. April 2022) |
Programmiersprache | TypeScript, JavaScript |
Kategorie | Framework |
Lizenz | MIT-Lizenz |
deutschsprachig | nein |
www.angularjs.org |
AngularJS (zur Abgrenzung vom Nachfolger Angular (Version 2 und höher) auch AngularJS 1 oder Angular 1 bezeichnet) ist ein clientseitiges JavaScript-Webframework zur Erstellung von Single-Page-Webanwendungen nach einem Model-View-ViewModel-Muster. Die Softwareentwicklung und das Komponententesten können damit vereinfacht werden. Es wurde als Open-Source-Framework vom US-amerikanischen Unternehmen Google Inc. publiziert. Der Long Term Support (LTS) wurde am 31. Dezember 2021 eingestellt.[3]
Im September 2016 wurde die stark verbesserte, nicht rückwärts-kompatible Version Angular 2 herausgegeben.[4] Der Begriff AngularJS wird nunmehr eingeschränkt auf Version 1 verwendet, Angular ohne Zusatz nur für die höheren Versionen.
Konzept
[Bearbeiten | Quelltext bearbeiten]Die Philosophie von AngularJS basiert auf der Annahme, dass deklarative Programmierung (in HTML) verwendet werden sollte, um Benutzeroberflächen zu gestalten und Softwarekomponenten miteinander zu verbinden, während imperative Programmierung (in JavaScript in Form von AngularJS) für die Umsetzung von Programmlogik verwendet werden sollte.
Der Aufbau von AngularJS orientiert sich lose am MVC-Muster, insbesondere dem MVVM-Muster, nach welchem eine Software in Models (Datenmodelle), Views (Benutzeroberfläche) und ViewModels (zur Veränderung der Benutzeroberfläche nach Interaktion mit den Daten) gegliedert wird.[5]
AngularJS erweitert das Vokabular von HTML um neue Tags und Parameter, die Direktiven, aus welchen zur Laufzeit Funktionalität generiert wird. Dies geschieht über sogenannte Datenbindungen, durch welche einzelne Elemente einer Webapplikation mit einem Datensatz verkoppelt werden. Interagiert der Benutzer mit der Applikation, können die Datensätze verändert oder anders dargestellt werden, etwa durch die Sortierung einer Tabelle nach einem anderen Kriterium. So kann Funktionalität erzeugt werden, ohne auf DOM-Manipulation via jQuery oder ähnlicher Bibliotheken zurückzugreifen.
Die verwendeten Datenmodelle werden nicht in AngularJS selbst definiert, sondern übernommen wie sie sind. Insbesondere gibt es keine clientseitige Entitätenverwaltung, wie in anderen Single-Page-Frameworks.
AngularJS-Applikationen werden in verschiedene Module untergliedert:
- Templates definieren den Aufbau der Benutzeroberfläche.
- Controller enthalten die Programmlogik.
- Scopes verwalten die Daten, auf die ein Programmbaustein zugreifen kann.
- Filter sortieren die Daten dynamisch nach vorgegebenen Kriterien.
- Provider stellen weitere Funktionalitäten (üblicherweise unter anderem die Interaktion mit einem Backend) zur Verfügung.
Diese Module werden vom sogenannten Dependency-Injection-Container beim Aufruf der Applikation durch Bootstrapping zu einem lose gekoppelten Programm zusammengeführt, welches aus wiederverwertbaren Teilkomponenten besteht. So entsteht eine wartbare Software im Sinne der ISO/IEC 25010. Technisch gesehen ist eine solche Anwendung eine Eventschleife, die jede Änderung abfängt, auswertet und ggf. Aktualisierungen in der Präsentation initiiert. Nichtveränderliche Daten können mittels eines One-Time-Bindings einmalig gebunden und von weiteren Aktualisierungen ausgeschlossen werden.
Ein mitgeliefertes Mocking-Modul erlaubt es Standardfunktionalitäten, wie die Komponente zum Durchführen von HTTP-Anfragen, durch Attrappen zu ersetzen und so isolierte Testfälle umzusetzen, ohne tatsächlich Anfragen zu verschicken oder Daten zu verändern. Dadurch ist die isolierte Testbarkeit der einzelnen Module gegeben.[6]
Struktur
[Bearbeiten | Quelltext bearbeiten]Controller
[Bearbeiten | Quelltext bearbeiten]In AngularJS wird ein clientseitiges Model (nach dem Model-View-ViewModel-Muster ein ViewModel) gemeinsam mit der Logik in einem Controller definiert. Die Controller werden anschließend zu einem Modul zusammengefasst. Die Module werden mit Hilfe eines integrierten Dependency-Injection-Containers in die Applikation eingebunden. Dabei wird die View mit dem Model verbunden. Diese Datenbindung ist bidirektional, das heißt, Benutzereingaben wirken sich auf das Model aus, programmatische Änderungen am Model aber auch auf die Benutzeransicht.
Direktiven
[Bearbeiten | Quelltext bearbeiten]AngularJS ermöglicht es, benutzerdefinierte HTML-Elemente und -Attribute, sogenannte Direktiven, zu erstellen.
Vordefinierte Direktiven sind am ng-Namensraum im Präfix erkennbar. Die Art des zu benutzenden Präfixes ist dabei vom Validator abhängig.
Validator | Beispiel |
---|---|
keiner | ng-repeat="item in items"
|
XML | ng:repeat="item in items"
|
HTML5 | data-ng-repeat="item in items"
|
xHTML | x-ng-repeat="item in items"
|
Um Elemente auszuwählen, verwendet AngularJS ein integriertes jQuery Lite (jqLite). Dabei handelt es sich um eine reduzierte Version von jQuery, in welcher nur die wichtigsten Funktionalitäten eingebunden sind. Wird jQuery in das HTML-DOM eingebunden, wird dieses statt jQuery Lite verwendet.
Interpolation
[Bearbeiten | Quelltext bearbeiten]Mit Hilfe von doppelten geschweiften Klammern (double-curly syntax) können JavaScript-Ausdrücke im HTML-Code eingebettet werden. Hierbei werden jedoch keine Sprunganweisungen unterstützt. Mit dem Pipe-Operator |
können Filter hinzugefügt werden, die sich auf das angezeigte Resultat auswirken.
Alternativ kann auch ng-bind
verwendet werden. Die Befehle <span ng-bind="name"></span>
und <span>{{name}}</span>
führen beide dazu, dass der Wert der Variable name
angezeigt wird. Mit ng-bind
wird jedoch verhindert, dass der Browser beim erstmaligen Laden die Vorlage anzeigt, falls AngularJS die Daten nicht schnell genug geladen und damit die Vorlage ersetzt hat.
Services
[Bearbeiten | Quelltext bearbeiten]Services enthalten die Geschäftslogik und binden externe Ressourcen – etwa REST-Webservices – ein. Services werden als Singleton instanziiert.
Services können selbst programmiert werden oder von Drittanbietern übernommen werden. Das AngularJS-Framework stellt aber bereits zahlreiche Services (erkennbar am $-Präfix) zur Verfügung. Dazu zählen beispielsweise $http
und $resource
, die zum Durchführen von Ajax-Anfragen dienen. Beide greifen intern auf das XMLHttpRequest-Objekt zu und unterscheiden sich im Abstraktionsgrad. Während $http
beliebige HTTP-Anfragen durchführen kann, ist $resource
auf REST-Services spezialisiert.
Kommunikation zwischen Scopes
[Bearbeiten | Quelltext bearbeiten]Jeder Controller besitzt ein eigenes $scope
-Objekt, welches die zum Controller gehörigen Funktionen und Daten kapselt. Damit Controller mit anderen Controllern oder Services kommunizieren können, werden vom $scope
- bzw. vom $rootScope
-Objekt $emit
- und $broadcast
-Methoden zur Verfügung gestellt. Dabei dient $emit
dazu, Nachrichten an alle übergeordneten Scopes zu senden, während $broadcast
dazu dient, Nachrichten an untergeordnete Scopes zu senden.
Damit ein Controller oder ein Service auf eine Nachricht reagieren kann, muss er sich für die Nachricht mit Hilfe der $on
-Methode für den Nachrichtentyp registrieren (Publish-Subscribe-Verfahren).
Routen in Single-Page-Applikationen
[Bearbeiten | Quelltext bearbeiten]In Single-Page-Applikationen werden mit Routen die Zuordnung von URLs zu spezifischen Ansichten festgelegt. Zu diesem Zweck stellt AngularJS das ngRoute
-Modul[7] bereit. Damit können innerhalb der globalen HTML-Vorlage verschiedene Ansichten (HTML-Fragmente) dynamisch in ein Element mit der ng-view
-Direktive[8] nachgeladen werden.
Dabei kann man nur eine einzelne ng-view
-Direktive pro Seite angeben. Abhilfe schafft hier der alternative UI-Router des AngularUI-Projekts, dessen Funktionsumfang weitaus größer ist[9][10][11], sowie das Modul Angular-Route-Segment, welches leichtgewichtiger ist und die Schnittstelle des vorhandenen AngularJS-Routers lediglich erweitert.[12][13]
Das $location
-Objekt[14] erlaubt die direkte Verarbeitung der Browser-URL, so dass eine Seitennavigation simuliert werden kann.
Hallo-Welt-Programm
[Bearbeiten | Quelltext bearbeiten]Im Folgenden wird ein Hallo-Welt-Programm in AngularJS gezeigt:
In Default.html
:
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.min.js"></script>
<script src="controller.js"></script>
</head>
<body>
<div ng-app="helloWorldModule">
<div ng-controller="HelloWorldController">
Name: <input type="text" ng-model="name" required>
<hr>
<div>Hello {{name}}!</div>
</div>
</div>
</body>
</html>
In controller.js
:
'use strict';
// definieren eines Moduls
var helloWorldModule = angular.module("helloWorldModule", []);
// hinzufügen eines Controllers zum Modul
helloWorldModule.controller("HelloWorldController", function ($scope) {
$scope.name = "World";
});
Angulardart
[Bearbeiten | Quelltext bearbeiten]Mit Angulardart ist eine Version für die Programmiersprache Dart verfügbar. Angulardart lehnt sich eng an AngularJS an, wobei die zusätzlichen Möglichkeiten von Dart wie Metadaten, Typen und Klassen genutzt werden.[15][16]
Siehe auch
[Bearbeiten | Quelltext bearbeiten]JavaScript-Bibliotheken
JavaScript MV*-Frameworks
Literatur
[Bearbeiten | Quelltext bearbeiten]- Philipp Tarasiewicz, Robin Böhm: AngularJS: Eine praktische Einführung in das JavaScript-Framework. 1. Auflage. dpunkt.verlag, 2014, ISBN 978-3-86490-154-6, S. 354.
- Brad Green, Shyam Seshadri: AngularJS. 1. Auflage. O’Reilly Media, 2013, ISBN 978-1-4493-4485-6, S. 180 (englisch).
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 1.8.3. 7. April 2022 (abgerufen am 29. Juli 2022).
- ↑ 1.8.3 ultimate-farewell (2022-04-07).
- ↑ Stable AngularJS and Long Term Support
- ↑ AngularJS is No More – The Future of TypeScript and Angular 2? ( des vom 31. Januar 2017 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Golo Roden: Webanwendungen mit AngularJS. Heise Online, 13. September 2013, abgerufen am 2. September 2019.
- ↑ API Reference / ngMock. In: angularjs.org. Abgerufen am 2. September 2019 (englisch).
- ↑ ngRoute. In: AngularJS Developer Documentation. Abgerufen am 2. Oktober 2013 (englisch).
- ↑ ngView. In: AngularJS Developer Documentation. Abgerufen am 2. Oktober 2013 (englisch).
- ↑ AngularUI for AngularJS. Abgerufen am 27. August 2014 (englisch).
- ↑ UI-Router – JsWiki.de, das deutsche Wiki rund um JavaScript. Archiviert vom (nicht mehr online verfügbar) am 2. April 2015; abgerufen am 19. März 2015. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Golo Roden: Verschachtelte Ansichten mit AngularJS. In: Heise Developer. Verlag Heinz Heise, 6. Mai 2013, abgerufen am 2. Oktober 2013.
- ↑ angular-route-segment.com. Abgerufen am 19. März 2015 (englisch).
- ↑ Angular-Route-Segment – JsWiki.de, das deutsche Wiki rund um JavaScript. Archiviert vom (nicht mehr online verfügbar) am 2. April 2015; abgerufen am 19. März 2015. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Using $location. In: AngularJS Developer Documentation. Abgerufen am 2. Oktober 2013 (englisch).
- ↑ AngularDart – Superheroic MVW Framework for Dart
- ↑ ANGULARDART – AngularJS auf Dart portiert. golem.de, 6. November 2013.