Tag: nodejs

201518Jul

JavaScript: Grundätzliche Entwurfsmuster für Node.js

Wer als JavaScript-Entwickler mit Node.js anfängt, wird anfangs vermutlich auf einige Stolpersteine stoßen. In der Welt von Node.js gibt es ein paar Unterschiede im Vergleich zur klassischen Webentwicklung im Browser, da andere Konzepte vorliegen und eine entsprechende Programmierung erforderlich ist. Im Blog von Rising Stack findet sich dazu ein kompakter Artikel, der sich mit Entwurfsmustern für Node.js beschäftigt.

RisingStack - Fundamental Node.js Design Patterns

Zu den beschriebenen Entwurfsmustern (Design Patterns) zählen beispielsweise Singletons, Observer, Factories oder Dependency Injection. Singletons sind etwa mit statischen Funktionen vergleichbar und benötigen keine mehrfache Instanziierung. So können Singletons in Verbindung mit module.exports eine statische Klasse bilden, in der sich verschiedene Hilfsfunktionen finden. Schließlich werden in dem Beitrag noch kurz Middlewares und Pipelines beschrieben, die vor allem bei Anwendungsframeworks wie Express oder Koa zum Einsatz kommen.

201514Jul

Cola.js: Bibliothek für Constraint-Layout-Diagramme

Graphen und Diagramme, die auf einer kraftgelenkter Anordnung basieren (Force-Directed Graphs), können auch als "Constraint-Based Layout" bezeichnet werden. Für derartige Szenarien bieten sich Skripte wie Arbor.js oder Sigma.js an. Es gibt zudem noch eine weitere Bibliothek, die interessante Features bietet: Cola.js kann mit D3.js, SVG.js, aber auch mit THREE.js kombiniert werden, um kraftgelenkte Graphen zu zeichnen.

Cola.js - Bibliothek für Constraint-Diagramme

Die Graphen zeichnen sich durch eine ästhetische Anordnung aus, da sich möglichst wenige Linien, die eine gemeinsame Schnittstelle aufweisen, überlappen und die verbundenen Elemente immer einen gewissen Abstand zueinander beibehalten. Dieses Cola.js-Beispiel zeigt den Einsatz in Verbindung mit THREE.js. Dadurch werden auch dreidimensionale kraftgelenkte Diagramme möglich, dessen Umsetzung ohne eine spezielle Bibliothek einen gewissen Schwierigkeitsgrad darstellen würde. Auf der Website von Cola.js finden sich noch weitere Beispiele, das Skript selbst steht als NPM-Modul und in einer Web-Variante bei GitHub bereit.

201509Jul

Windows: Ordner per Kontextmenü in Konsole öffnen

Wer mit Node.js arbeitet, wird hauptsächlich mit der Konsole arbeiten. Das verwendete Betriebssystem spielt dabei keine Rolle. Im produktiven Einsatz wird in der Regel die entsprechende Konsole (cmd.exe/Terminal) gestartet und anschließend zum gewünschten Verzeichnis navigiert (per cd). Alternativ kann auch ein entsprechender Ordner per Drag 'n' Drop in das Konsolenfenster gezogen werden, um die vollständige Pfadangabe zu erhalten.

Windows - Ordner per Kontextmenü in Konsole öffnen

Unter Windows geht es aber noch einen Schritt schneller: Über einen kleinen Eintrag in der Windows-Registrierung lässt sich allen Ordnern ein Eintrag im Konextmenü hinzufügen, über den dann direkt die Konsole mit dem entsprechenden Pfad geöffnet werden kann. Der vollständige Pfad inklusive Parameter lautet:

  • [HKEY_CLASSES_ROOT\Directory\shell\console\command]
    @="cmd.exe /k cd \"%V\""

Zusätzlich kann im "console"-Bereich (diese Bezeichnung kann frei gewählt werden) noch ein Icon gesetzt werden. Die ZIP-Datei enthält die fertige Registrierungsdatei, die nur noch per Doppelklick aktiviert werden muss.

201527Mai

JavaScript: Allgemeine Fehler bei Promises

Mit Promises steht JavaScript-Entwicklern schon seit geraumer Zeit ein Konzept zur Verfügung, mit dem sich eine "Callback Hell" vermeiden lässt, da Funktionen asynchron ausgeführt werden können. Ein Promise ist also eine wartende Funktion, die per resolve oder reject aufgelöst werden muss, damit die nachfolgenden Promises per .then() ausgeführt werden.

PouchDB - We have a problem with promises

Nolan Lawson hat in einem Artikel auf dem PouchDB-Blog allerdings die Feststellung gemacht, dass Promises häufig falsch verwendet werden. Daher zeigt er verschiedene Fehler und entsprechende Verbesserungsvorschläge auf. Gerade bei der Arbeit mit dynamischen Daten und forEach-Schleifen kann auch mit Promises die "Pyramid of Doom" entstehen, die es zu vermeiden gilt.

201530Apr

Visual Studio Code: Cross-Plattform-Editor für Entwickler

Anlässlich der Build 2015 hat Microsoft ein wirklich interessantes Projekt für Webentwickler vorgestellt: Visual Studio Code heißt eine neue, kostenlose und plattformübergreifende (Windows, Mac OS X, Linux) Entwicklungsumgebung, die an Webentwickler gerichtet ist. Der Editor basiert auf Electron (zuvor Atom Shell) und damit auf Node.js, HTML und CSS. Dennoch bietet er alles, was das Entwickler-Herz begehrt: Bracket-Matching, IntelliSense, Multi-Cursor-Support, Parameter-Hints, Snippets, Breakpoints, Git-Integration und vieles mehr. Die Anwendung gibt Entwicklern 3 Themes zur Auswahl und die Konfiguration ist direkt über die Bearbeitung von JSON-Dateien möglich.

Visual Studio Code - Cross-Plattform-Editor für Webentwickler

Obwohl Visual Studio Code bisher nur in der Version 0.1.0 vorliegt, hat er sich schon jetzt als ultimatives Tool für Node.js-Apps bewährt: Node.js-Anwendungen können einfach per Knopfdruck gestartet und analysiert werden (Breakpoints, Step-Through, etc.) und in der Sidebar werden in Echtzeit die aktuellen Variablen angezeigt. Damit dürfte Microsoft ein kleiner Durchbruch gelungen sein, denn das Tool ist trotz seiner Kompaktheit sehr umfangreich. Es werden sämtliche Web-Sprachen (HTML, JavaScript, CSS, Less, Sass, TypeScript, PHP, CoffeeScript, Go, Handlebars, Markdown, Python, Ruby, SQL, YAML, etc.) unterstützt und durch seine Anpassbarkeit könnte Visual Studio Code schon bald zum Standard im Bereich kostenloser Editoren für Webentwickler werden. Natürlich gibt es weiterhin GitHubs Atom und auch Facebooks Nuclide könnte interessant werden.
Und Visual Studio 2015 wird es ebenfalls in sich haben: Laut einem Blog-Beitrag will man verstärkt auf die Entwicklung mobiler Apps setzen. Hier werden bisher Apache Cordova und Xamarin genannt. Es bleibt also spannend.

201516Apr

Osmosis: Website-Quelltexte verarbeiten mit Node.js

Wer mit Node.js den Quelltext von Webseiten auslesen und verarbeiten möchte, kann dazu beispielsweise das Modul Scraper.js nutzen, das bereits mit ausreichend Funktionalitäten bestückt ist. Neu in diesem Bereich ist das Modul Osmosis, das auf Promises basiert und dadurch Piping ermöglicht. Zudem werden verschachtelte Callbacks überflüssig.

Mit Osmosis lassen sich GET- und POST-Abfragen auf eine URL schicken und anschließend mit verschiedenen Funktionen verarbeiten. Per .find() sind CSS- und XPath-Queries möglich und weiterführende Links können mit .follow() ausgelesen werden. Per .set() lassen sich Informationen in das finale data-Objekt schreiben, das die gewünschten Daten repräsentiert. Das Projekt sollte im Auge behalten werden, denn laut Entwickler wird das Modul um eine Funktionalität erweitert werden, mit der auch dynamisch erzeugter Inhalt von Websites verarbeitet werden kann.

201516Apr

Node.js: Skripte per Windows-Kontextmenü ausführen

Node.js-Entwickler, die in Windows unterwegs sind, können von der Anpassbarkeit des Systems Gebrauch machen und beispielsweise das Kontextmenü dazu nutzen, Node.js-Skripte direkt per Klick auszuführen. Dazu braucht es nur ein paar Einträge in der Windows-Registrierung sowie den dazugehörigen Befehl. Voraussetzung ist, das Node.js auf dem Rechner installiert ist. Dann lassen sich Skripte einfach über den Befehl cmd in Verbindung mit der Node-Anwendung ausführen.

Node.js - Skripte per Windows-Kontextmenü ausführen

Mit dem Parameter /k wird cmd dazu angewiesen, den Prozess nicht zu beenden. Das entsprechende Fenster, also die Eingabeaufforderung, bleibt in diesem Fall nach der Ausführung des Skripts bestehen. Wer hingegen nur das Skript ausführen und das dazugehörige Konsolenfenster direkt wieder schließen möchte, verwendet stattdessen einfach den Parameter /c.

Weiterlesen...
201501Apr

React Native: Native Apps mit React/JavaScript erstellen

Und noch einmal Facebook: Bei den hauseigenen Open Source-Projekten tut sich momentan etwas. Noch steht die Veröffentlichung der eigenen IDE namens Nuclide aus und inzwischen wurde auch das Framework React Native zum Open Source-Projekt gemacht. Damit lassen sich native Apps für mobile Geräte auf Basis von React erzeugen. Derzeit steht nur die iOS-Version bereit, womit sich jedoch schon arbeiten lässt. Installiert wird das Framework per Node.js und auch die App-Entwicklung stützt sich ganz auf die V8-Engine: Zu Beginn läuft ein lokaler Server, auf den die App zugreift, so dass die App bzw. der View bei Code-Änderungen nur per Tastenkürzel neu geladen und nicht neu kompiliert werden muss.

React Native - A framework for building native apps using React

Das Beispiel funktioniert soweit einwandfrei, doch will man komplexere Anwendungen erstellen oder andere React-Widgets benutzen, erfordert es schon tiefer gehende Kenntnisse des Facebook-Frontend-Frameworks. Bei GitHub finden sich schon etliche Beispiele, welche die verschiedenen Komponenten oder gar Spiele demonstrieren.
Insgesamt ist der Ansatz interessant, allerdings lässt die Android-Unterstützung noch auf sich warten. Daher empfiehlt sich für die schnelle Entwicklung hybrider Cross-Plattform-Apps auf JavaScript-Basis vorerst das Ionic-Framework, das auf AngularJS und PhoneGap bzw. Cordova basiert und eigene JavaScript-/CSS-Komponenten bietet. Wer also ohnehin schon mit AngularJS vertraut ist, dürfte mit dem Ionic-Framework bestens bedient sein. Auch hier geht die App-Entwicklung dank Node.js und LiveReload sehr schnell von statten.