AngularJS
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. KonzeptDie 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:
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] StrukturControllerIn 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. DirektivenAngularJS 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.
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. InterpolationMit 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 Alternativ kann auch ServicesServices 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 Kommunikation zwischen ScopesJeder Controller besitzt ein eigenes Damit ein Controller oder ein Service auf eine Nachricht reagieren kann, muss er sich für die Nachricht mit Hilfe der Routen in Single-Page-ApplikationenIn Single-Page-Applikationen werden mit Routen die Zuordnung von URLs zu spezifischen Ansichten festgelegt. Zu diesem Zweck stellt AngularJS das Dabei kann man nur eine einzelne Das Hallo-Welt-ProgrammIm Folgenden wird ein Hallo-Welt-Programm in AngularJS gezeigt: In <!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 'use strict';
// definieren eines Moduls
var helloWorldModule = angular.module("helloWorldModule", []);
// hinzufügen eines Controllers zum Modul
helloWorldModule.controller("HelloWorldController", function ($scope) {
$scope.name = "World";
});
AngulardartMit 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 auchJavaScript-Bibliotheken JavaScript MV*-Frameworks Literatur
WeblinksCommons: AngularJS – Sammlung von Bildern
Einzelnachweise
|