201321Mai

Reguläre Ausdrücke: Umfangreiche Anleitung online

Das Entwickeln von regulären Ausdrücken ist essentiell und kann in jeder Programmiersprache zur Herausforderung werden, wenn komplexere Ausdrücke eingesetzt werden müssen. Gerade für Neueinsteiger dürfte das Verstehen und Schreiben von regulären Ausdrücken schwierig sein, da die verschiedenen Zeichenklassen und Quantifizierer nicht sofort ersichtlich sind. Im Netz finden sich bereits etliche Quellen sowie nützliche Tools, die das Testen von Ausdrücken in Echtzeit erlauben.
Eine wirklich umfangreiche und gelungene Anleitung für reguläre Ausdrücke in JavaScript steht jetzt mit dem JavaScript Regular Expression Enlightenment auf TechPro zur Verfügung. Auf dieser Seite wird die komplette Materie anhand von Beispielen analysiert und beleuchtet.

Tech.Pro - JavaScript Regular Expression Enlightenment

Der Artikel enthält viele interaktive JSFiddle-Bereiche, die einen direkten Einblick in den Aufbau eines Ausdrucks erlauben. Ebenfalls interessant dürfte die Website Debuggex sein, die in dem Beitrag verwendet wird und ähnlich wie Regexper reguläre Ausdrücke visualisiert.
Zusammen mit den interaktiven Beispielen und den grafischen Darstellungen stellt der Artikel insgesamt eine wichtige Quelle dar, die nicht nur für Einsteiger interessant sein dürfte.

201320Mai

jQuery: Native JavaScript-Äquivalente zu Funktionen

Frameworks wie jQuery oder MooTools zeichnen sich vor allem durch ihre einfache und intuitive Schreibweise aus. Hinter den Framework-Funktionen stecken meist komplexere Mechanismen, da Elemente mit speziellen Eigenschaften ausgestattet werden. Manche Funktionalitäten lassen sich aber mittlerweile auch sehr leicht nativ umsetzen, wodurch die Performance erhöht werden kann. Dieser Aspekt ist gerade bei mobilen Geräten sehr wichtig, da hier die Qualität einer WebApp durch übermäßige jQuery-Operationen schnell sinken kann.
Lee Brimelow von Adobe hat in einem Beitrag ein paar jQuery-Funktionen aufgezeigt, die in aktuellen Browsern mit nativen JavaScript-Funktionen ersetzt werden können.

Lee Brimelow - Native equivalents of jQuery functions

In der Aufzählung finden sich so die Äquivalente für Selektoren, DOM-Manipulationen und CSS-Änderungen, wie zum Beispiel:

  • jQuery:
  • $(document.body).append("<div id='myDiv'><img src='im.gif' /></div>");
  •  
  • JavaScript:
  • var frag = document.createDocumentFragment();
  •  
  • var myDiv = document.createElement("div");
  • myDiv.id = "myDiv";
  •  
  • var im = document.createElement("img");
  • im.src = "im.gif";
  •  
  • myDiv.appendChild(im);
  • frag.appendChild(myDiv);
  • document.body.appendChild(frag);

Sicherleicht ist die jQuery-Syntax kompakter, aber die native Schreibweise lässt sich einfach in einer Funktion verpacken und wenn es um Performance geht, sollten die integrierten Fähigkeiten des Browsers auf jeden Fall ausgenutzt werden. Wer wissen möchte, welcher Browser neuere Selektoren wie "querySelectorAll" unterstützt, kann dies auf CanIUse.com nachschlagen.
Lee Brimelow hat übrigens auch Benchmarks aufgestellt, in denen der Unterschied von jQuery zu nativen Funktionen deutlich wird.

201315Mai

X-Tag: JavaScript-Polylib für Web Components

Im Dezember letzten Jahres hatte ich über das Web UI berichtet, einer User Interface-Bibliothek für Google Dart, die von Web Components Gebrauch macht. Bei den Web Components handelt es sich um eine sehr interessante Methode, um dynamische HTML-Bausteine zu erzeugen und wiederzuverwenden. So lassen sich also eigene Komponenten erstellen, die mit HTML, CSS und JavaScript ausgestattet werden können.
Die Web Components befinden sich noch im Standardisierungsprozess des W3C und stehen aktuell nur in Google Chrome zur Verfügung. Dennoch gibt es seit einiger Zeit schon diverse Polyfills, wie beispielsweise X-Tag von Mozilla.

X-Tag - Web Components Custom Element Polylib

Bei X-Tag handelt es sich um eine kleine JavaScript-Bibliothek, die das Verhalten eines Web Components simuliert: So können eigene HTML-Tags definiert werden, die komplette Widgets enthalten können, wie etwa ein Accordion, ein Kontaktformular oder gar eine Kartenansicht. Das Panel-Beispiel zeigt etwa das asynchrone Laden einer HTML-Datei in einen Container. Der X-Tag-Code dazu sieht aus wie folgt:

  • <x-panel src="some-page.html"></x-panel>

Es gibt noch weitere Polyfills für Web Components, wie beispielsweise Model Driven Views, die ebenfalls vielversprechend aussehen.

201314Mai

Timbre.js: Klangsynthese mit HTML5 im Browser

Das virtuelle Erzeugen von Tönen durch Synthese ist im Web nicht mehr nur durch Flash (z.B. Audiotool) möglich. Auch HTML5 ermöglicht dank der Web Audio API das Generieren von Wellenformen mittels Oszillatoren. Durch die Frequenzen mehrerer Oszillatoren ist also die Frequenzmodulationssynthese möglich, wodurch sich variierende Töne und Melodien erzeugen lassen. Mit der JavaScript-Bibliothek Timbre.js stehen für den Bereich der Audio-Programmierung komfortable Werkzeuge bereit.

Timbre.js - JavaScript Library for Objective Sound Programming

Timbre.js bildet also die Brücke zur Web Audio API und bietet eine einfache Schreibweise an:

  • T("sin", {freq:880, mul:0.5}).play();

Das Framework bietet neben dem Erzeugen von Tönen auch etliche Filter (Chorus, Delay, FFT, Equalizer, Phaser, usw.) an. Weiterhin können Audio-Dateien verarbeitet und sogar in Einzelteile (Beat Slicing) zerlegt werden, um sie dann in einer neuen Reihenfolge zusammenzusetzen. Das Beatbox-Beispiel zeigt dieses Szenario.
Auf der Seite der Vorgängerversion v12 finden sich weitere Beispiele.