Über Norbert Schmidt

Norbert Schmidt arbeitet seit mehreren Jahren bei Mayflower als JavaScript und PHP-Entwickler. Schaue Dir Norberts GitHub-Projekte an. Besuche auch Norberts Blog.

Automatisierung der Frontend-Entwicklung mit Grunt

Die Automatisierung von bestimmten Workflows, d.h. von fundamentalen und immer wiederkehrenden Arbeitsschritten, ist in der Softwareentwicklung ein alter Hut. Testläufe und komplette Buildprozesse wiederholt manuell durchzuführen würde nicht nur viel Zeit in Anspruch nehmen, sondern wäre vor allem auch viel fehleranfälliger als automatisierte Verfahren. Auch in der Webentwicklung werden mittlerweile Workflows wie das Kompilieren von CSS, das Minifizieren des Source-Codes, statische Code-Analysen (Linting) und das Ausführen von Unit- und Selenuim-Tests als automatische Prozesse gestaltet.

Ich stelle im Folgenden den JavaScript-Task-Runner Grunt als adäquates Tool für die Automatisierung von Arbeitsschritten im Rahmen der Frontend-Entwicklung vor.

Weiterlesen

AngularJS Tipps: Message-Bus für eine AngularJS-App und das Publish-Subscribe Pattern

Mit diesem Artikel setze ich die Reihe AngularJS Tipps fort und beschäftige mich hier noch einmal mit der Frage, wie in einer AngularJS-App Kommunikation und Datenaustausch stattfinden kann. Allerdings liegt der Schwerpunkt in diesem Fall auf Applikationen mit konsequent modularer Struktur. Teil I der Reihe handelte von der Kommunikation zwischen AngularJS-Controllern und Teil II der Reihe vom grundlegenden Aufbau einer AngularJS-Applikation.

Was ich nun in diesem Artikel konkret vorstellen möchte, ist die Implementierung eines Message-Bus mit AngularJS, der als Notification-Service dienen soll. Das Konzept dahinter ist das Publish-Subscribe Pattern. Damit können Teile einer Applikation miteinander verknüpft werden die nicht in einer unmittelbaren Beziehung stehen sollen (Kapselung, Wiederverwendbarkeit, Testbarkeit).

Der Artikel richtet sich an Leser die bereits Erfahrungen mit AngularJS gesammelt haben und ist darum keine generelle Einführung in die Arbeit mit diesem JavaScript-Application-Framework.

Weiterlesen

AngularJS Tipps: Modularer Aufbau einer AngularJS-Applikation

In diesem zweiten Teil der Reihe AngularJS Tipps geht es um den grundlegenden Aufbau einer AngularJS Web-Applikation. In Abgrenzung zu bekannten Beispielen, zeige ich ein einfaches, aber praxisnahes Muster für eine modulare Struktur einer AngularJS-App. Im vorangegangenen ersten Teil der Reihe beschäftigte ich mich mit der Kommunikation zwischen AngularJS-Controllern.

Der Artikel richtet sich an Leser die bereits Erfahrungen mit AngularJS gesammelt haben und ist darum keine generelle Einführung in die Arbeit mit diesem JavaScript-Application-Framework.

Weiterlesen

AngularJS Tipps: Controller-Kommunikation, Datenaustausch per Routing, AJAX-Error-Handling

Dieser Artikel ist der erste Teil der Reihe “AngularJS Tipps”. Er beschäftigt sich mit drei Problemstellungen zu denen Best-Practise-Tipps gegeben werden sollen: (1) Kommunikation zwischen Controllern via Services, (2) Datenaustausch zwischen Controllern per Routing und AJAX-Errors an einer zentralen Stelle einer Web-App abfangen. Alle diese Themen drehen sich um die Frage, wie sich eher unabhängige Teile einer AngularJS-App miteinander verdrahten lassen, wie sich also ein Autausch von Daten und Informationen herstellen lässt.

Der Artikel richtet sich an Leser die bereits Erfahrungen mit AngularJS gesammelt haben und ist darum keine generelle Einführung in die Arbeit mit diesem JavaScript-Application-Framework.

Weiterlesen

JavaScript Coding Patterns: Objekt-Vererbung mit Prototypen

In den vorangegangenen Teilen der Reihe JavaScript Coding Patterns (Teil I, Teil II und Teil III) wurde immer wieder betont, dass JavaScript eine funktionale und zugleich objektorientierte Skriptsprache ist. Funktionen sind hier selbst Objekte die in JavaScript nicht auf Klassen beruhen, sondern ihre Attribute und Methoden von bereits existierenden Objekten erben. Es handelt sich dabei um eine prototypenbasierte Art der Vererbung.

In diesem vierten Teil der Reihe wird es darum gehen sich die Rolle, die Prototypen in JavaScript spielen, etwas genauer anzuschauen.

Weiterlesen

JavaScript Coding Patterns: Das “Module Pattern”

In diesem dritten Teil der Reihe JavaScript Coding Patterns wird das sogenannte Module Pattern vorgestellt. Hierbei handelt es sich um eine Kombination aus einer Closure, einer Immediate Funktion und einem Objekt Literal, drei Patterns die bereits im ersten Teil und im zweiten Teil dieser Reihe erläutert wurden.

Weiterlesen

JavaScript Coding Patterns: Closures & Immediate Functions

Dies ist der zweite Teil der Reihe JavaScript Coding Patterns. Der erste Teil handelt vom Einsatz von Objekt-Literalen zur Strukturierung von JavaScript-Code. Nun geht es um Closures und Immediate Functions und darum, wie sich mit deren Hilfe private und öffentliche Eigenschaften von JavaScript-Objekten umsetzen lassen.

Weiterlesen

JavaScript Coding Patterns: Objekte & Objekt-Literale

Beim Programmieren mit JavaScript steht einem nicht immer ein Framework zur Verfügung. Auch lohnt sich der Einsatz eines solchen Hilfsmittels nicht immer, da schließlich auch viel Kleinkram mit JavaScript zu programmieren ist. Also macht es doch Sinn, sich ein paar Gedanken zum Thema JavaScript Coding Patterns zu machen.

In einer objektorientierten und funktionalen Programmiersprache wie JavaScript sie ist, spielen selbstverständlich ObjekteFunktionen und Vererbung die Hauptrolle bei der effizienten und sinnvollen Strukturierung von Code. Entlang dieser zentralen Sprachelemente haben sich Coding Patterns herausgebildet, von denen ich in diesem ersten Teil einer Artikel-Serie den Einsatz des Objekt-Literals als Mittel zur Code-Organisation vorstellen werde.

Weiterlesen

JavaScript Tests mit Karma schnell an den Start bringen

Schon seit geraumer Zeit gibt es für fehlende Unit Tests in JavaScript keine Entschuldigung mehr. Erstens weil JavaScript mit Sicherheit keine “toy language”, sondern eine ernstzunehmende Programmiersprache ist. JavaScript steuert heutzutage client- und serverseitige  Applikationen, die ohne Wenn und Aber getestet werden müssen. Zweitens existieren auch für JavaScript bereits seit längerem Frameworks, die das Schreiben von Unit Tests vereinfachen und standardisieren. Zu nennen sind hier JSUnitYUI Test, QUnit, Mocha und Jasmine. Drittens und schließlich sind auch automatisierte Testläufe mit Runnern wie JSTestDriver, YUI YetiBusterJS und eben Karma ohne Probleme durchführbar. Der zuletzt genannte Test Runner Karma ist der neueste von allen. Seine Vorzüge werde ich im Folgenden darstellen.

Weiterlesen