Tag: angular

201609Jul

JavaScript: Asynchrone Abläufe mit Zonen steuern

Die Arbeit mit asynchronen Abläufen kann in JavaScript seit geraumer Zeit durch Promises und entsprechenden Bibliotheken erleichtert werden. Gerade JSON-Requests und deren Verarbeitung wird durch Promises wesentlich einfacher, da keine verschachtelten Callbacks mehr benötigt werden. Verbinden lassen sich asynchrone Abläufe auch mit Observables, wie man sie beispielsweise von Knockout kennt. Angular 2 etwa greift hierfür auf die ReactiveX-Observables zurück. Ebenfalls neu in Angular 2 ist das Konzept von Zonen: Bei einer Zone handelt es sich um einen Ausführungsbereich, der sich über asynchrone Aufrufe erstreckt. In JavaScript wird dadurch das Konzept eines lokalen Threadspeichers simuliert.

JavaScript - Asynchrone Abläufe mit Zonen steuern

Das AngularJS-Team hat für diesen Zweck die Bibliothek Zone.js entwickelt, die fester Bestandteil von Angular 2 ist und mittlerweile auch als Standalone-Bibliothek genutzt werden kann. Inspiriert wurde Zone.js von dem Zonen-Konzept von Dart. Mit Zonen lassen sich also asynchrone Verarbeitungen, wie etwa setTimeout oder Promises, gezielt steuern. Eine vereinfachte Implementierung von Zonen gibt es zum Beispiel mit can-zone. Auf der GitHub-Seite finden sich Code-Beispiele, wie einfache Zonen umgesetzt werden können. Bis es Zonen in den EMCAScript-Standard schaffen, dürfte noch eine Weile vergehen. Bis dahin eignen sich derartige Frameworks also bestens.

201604Jun

Angular 2 Seed: TypeScript-Starter-Kit für WebApps

Das Angular-Framework geht in die zweite Runde und auf der offiziellen Website befinden sich bereits ausführliche Tutorials und Ressourcen für Entwickler, die mit der neuen Version der Bibliothek arbeiten möchten. Angular 2 stellt eine Rundumerneuerung dar, bei der sich Einiges geändert hat: So wurden etwa Controller durch Components ersetzt, das $scope existiert in der Form nicht mehr und die Entwickler sind gänzlich auf ein Modulsystem umgestiegen. Zudem kommt RxJS zum Einsatz, was die Arbeit mit asynchronen Abläufen vereinfacht. Auch die Template-Syntax hat sich grundlegend geändert. Alles in allem ist Angular 2 aber schon jetzt ein durchdachtes und gelungenes Framework — wer sich die Alpha- und Beta-Versionen angesehen hat, dürfte einen ersten Eindruck erhalten haben.

Angular 2 Seed - A basic Angular 2 TypeScript starter project

Da ich mit den derzeitigen Seeds, also Angular 2-Boilerplates, nicht zufrieden war, habe ich einen eigenen Seed erstellt: Es handelt sich dabei um eine beispielhafte Single-Page-Application (SPA), die auf TypeScript, Sass und SystemJS basiert. Die Webanwendung enthält einen Login-Bereich sowie eine Dashboard-Ansicht, so dass es autorisierte und öffentliche Bereiche gibt. Zudem gibt es ein Directive, einen Service sowie eine Pipe. Auch eine Fehlerseite und das damit verbundene Routing-Konzept sind enthalten. Für die TypeScript- und Sass-Kompilierung sowie die Erzeugung des Angular 2-Bundles (SystemJS) kommt Gulp zum Einsatz. Hiermit kann auch eine Produktionsversion der WebApp erzeugt werden, bei der JavaScript und CSS jeweils in eine Datei zusammengeführt werden.
Eine Online-Demo des Angular 2-Seeds gibt es auf dieser Seite. Das Projekt steht bei GitHub zum Download bereit.

201619Jan

Vue.js: Modernes und kompaktes Reactive-Framework

Es gibt einen neuen Stern am Framework-Himmel, der sich neben anderen Web 3.0-Frameworks wie React, AngularJS oder Riot.js aufstellt: Es ist von Vue.js die Rede und es sei gleich vorab erwähnt, dass diese Bibliothek auf jeden Fall einen Blick wert ist. Sie vereint Konzepte von React und AngularJS, bleibt dabei aber einfach und dennoch komfortabel. Vue.js bietet reaktive Data-Bindings, um DOM und Daten zu synchronisieren. Es kommt mit einer Template-Sprache, Filtern, Directives, Komponenten und sogar Mixins.

Vue.js - Reactive Components for Modern Web Interfaces

Das Framework biete im Grunde alles, was eine moderne Webanwendung oder mobile App benötigt. Für Single-Page-Applications (SPAs) darf auch ein Router nicht fehlen. Hier ein Code-Snippet, welches Event Handling demonstriert. Der HTML-Code:

  • <div id="example-2">
  • <button v-on:click="say('hi')">Say Hi</button>
  • <button v-on:click="say('what')">Say What</button>
  • </div>

Und der JavaScript-Teil:

  • new Vue({
  • el: '#example-2',
  • methods: {
  • say: function(msg) {
  • alert(msg);
  • }
  • }
  • });

Die Entwickler hinter Vue.js haben sogar einen ausführlichen Vergleich mit den führenden Web-Frameworks zusammengestellt, in dem die einzelnen Unterschiede sowie Nachteile sehr genau beleuchtet werden. Hier wird auch die Funktionsweise von Vue.js noch deutlicher. Bei GitHub steht das Projekt bereit und hat mittlerweile Version 1.0 erreicht.

201512Dez

Riot.js: Von React inspiriertes Micro-Framework

Das React-Framework von Facebook dürfte mittlerweile in aller Munde sein und stellt zusammen mit AngularJS bzw. Angular 2 das vielversprechendste JavaScript-Framework dar, wenn es um komplexe Single-Page-Applications (SPAs) sowie mobile Web-Apps geht. Wem React etwas zu umfangreich für eine Webanwendung ist, der kann einen Blick auf das Micro-Framework Riot.js werfen.

Riot.js - A React-like user interface micro-library

Dabei könnte man von einem kleinen Bruder von React sprechen, das bestimmte Dinge erweitert und dabei kompakt bleibt (18 KB in minifizierter Form). Riot.js bietet also einen unidirektionalen Datenfluss, einen virtuellen DOM, ES6-Funktionen sowie Expressions innerhalb von HTML. Zudem sind eigene Tags möglich und die Syntax ist etwas leichter zu erlernen als bei React. Riot.js kann auch zusammen mit jQuery eingesetzt werden. Der Quellcode sowie Code-Beispiele finden sich bei GitHub.

201505Okt

JavaScript: Desktop-Anwendungen mit Electron/AngularJS

Plattformunabhängige Desktop-Anwendungen, die unter Windows, Mac OS X und Linux laufen, lassen sich seit geraumer Zeit auch mit einer JavaScript-Codebasis umsetzen. Dafür ist lediglich ein nativer Wrapper notwendig, der eine HTML-Engine integriert und die Ausführung von JavaScript über eine virtuelle Maschine ermöglicht. Diese beiden Aspekte werden mit dem Chromium-Framework erreicht. Damit auch native Fenster, Menüs und weitere Funktionalitäten möglich sind, ist ein Framework wie GitHubs Electron (zuvor Atom Shell) nötig. Hiermit kann direkt mit der Entwicklung der eigentlichen Anwendung gestartet werden.

Scotch.io - Creating Desktop Applications With AngularJS and GitHub Electron

Microsofts Visual Studio Code ist wahrscheinlich der bekannteste Vertreter der Electron-Ära. Wer eine eigene Desktop-Anwendung mit JavaScript entwickeln und dabei auch von AngularJS Gebrauch machen möchte, sollte sich dieses Tutorial ansehen. Darin wird Schritt für Schritt die Entwicklung einer nativen AngularJS-App beschrieben, die eine einfache Kundenverwaltung als Beispiel repräsentiert. Es werden die verschiedenen Schritte für Logik und User Interface bis hin zur Veröffentlichung mittels nativem Installer beschrieben.

201506Sep

AngularJS: Artikel für den Einstieg in Angular 2

Es wird noch eine Weile dauern, bis Angular 2.0 erscheinen wird: Ein offizielles Release-Datum gibt es nicht, es ist von Ende 2015, aber auch von 2017 die Rede. Dennoch können sich interessierte Entwickler schon jetzt mit der kommenden Version des MVW-Frameworks vertraut machen. Auf der neuen AngularJS-Website steht die Alpha-Version zum Download bereit und zudem gibt es verschiedene Einführungen in das Framework.

AngularJS - Superheroic JavaScript MVW Framework

Jetzt wurde noch eine weitere Website von Thoughtram ins Leben gerufen, auf der ausgesuchte und hochqualitative Artikel zum Thema Angular 2.0 bereitgestellt werden. Die Seite trägt den Namen "Exploring Angular 2" und ist bisher in diese Kategorien unterteilt: Getting Started, Dependency Injection, Routing, Views and Rendering und Migration / Upgrade. Die Seite wird zukünftig um weitere Anleitungen ergänzt werden und sollte bei AngularJS-Entwicklern daher einen Platz in den Lesezeichen finden.

201507Jun

JavaScript: ECMAScript 6 schon jetzt für Projekte einsetzen

Die Features von ECMAScript 6 (Harmony) können im Prinzip schon jetzt in 2015 für Projekte verwendet werden: Durch Transpiler wie Babel oder Traceur wird geschriebener ES6-Code für Browser in entsprechenden ES5-Fallback-Code umgewandelt, sofern diese ES6-Funktionen noch nicht unterstützen. Weiterhin empfiehlt sich die Verwendung eines Modulsystems (RequireJS, SystemJS), da durch ES6 echte Klassen und Module möglich sind. Zudem sollte ein Package-Manager wie jspm eingesetzt werden, um automatische Abhängigkeiten aufzulösen.

ECMAScript 6 - Harmony

Mit diesen Voraussetzungen lassen sich ohne Probleme schon jetzt moderne Web-Projekte auf ES6-Basis entwickeln. Damit der ganze Prozess etwas leichter verständlich wird, sind hierzu zwei Artikel zu empfehlen:

Die beiden Artikel ergänzen sich gegenseitig und stammen von angesehenen JavaScript-Entwicklern (Dr. Axel Rauschmayer und Cody Lindley von Telerik). Ein Blick auf ES6 lohnt sich in jedem Fall, zumal auch AngularJS 2 darauf basieren wird und Module einsetzt. Wer mit ES6 experimentieren möchte, nutzt dazu am besten den TypeScript Playground oder den Babel-REPL (Read-Eval-Print-Loop).

201525Mai

JavaScript: Alternative Konzepte zu Flux und React

Mittlerweile dürften die meisten JavaScript-Entwickler mit den Begriffen Flux oder React etwas anfangen können. Facebook hat damit neue Methoden zur Entwicklung moderner Webanwendungen geschaffen. Neben einem virtuellem DOM und einem unidirektionalen Datenfluss stehen bei React ein Klassensystem, Event-Emitter, Actions und Stores im Vordergrund der Funktionsweise. Das ganze stellt eine mögliche Lösung dar, bietet aber zugleich Raum für Weiterentwicklungen.

Flux - Application Architecture for Building User Interfaces

Inzwischen gibt es zwei Vertreter, welche die Paradigmen von Facebook analysiert und verändert haben. Zum einen hat der Entwickler Matti Lankinen eine Alternative beschrieben, die auf Bacon.js und React basiert: Hier wird also die Flux-Architektur mit ihren Konventionen aufgelöst und durch "Functional Reactive Programming (FRP)" ersetzt, bei dem Event-Streams die Grundlage bilden. Actions und Stores werden überflüssig, da eine "öffentliche API" als lokaler Dispatcher agiert und die Zustände innerhalb der Anwendung regelt. Eine beispielhafte TodoMVC-App demonstriert die Funktionsweise.
Der zweite Ansatz bezieht sich auf das UI-Framework Deku: Hierbei handelt es sich um eine funktionale Alternative zu React, die auf das Klassensystem verzichtet. ES6, JSX sowie Komponenten kommen hier weiterhin zum Einsatz, lediglich das Rendering gleicht bei dieser Idee dem einer Game-Engine.