Tag: entwicklung

201001Sep

Mashi: JavaScript-Toolkit für Timeline-Animationen

Für linear ablaufende Animationen (etwa in Slideshows, Produkt-Präsentationen oder E-Learning-Anwendungen) im Web bietet sich neben Flash der Einsatz von JavaScript an. So können beispielsweise längere Texte in mehrere Bereiche aufgeteilt werden, die per Klick nacheinander angesehen werden können. Auch Geschichten lassen sich durch lineare Abläufe oder Bilderfolgen in HTML erzählen.
Ein aktuelles Toolkit, mit dem sich solche Anwendungen in JavaScript entwickeln lassen, stellt Mashi dar. Dieses Projekt von Uli Preuss und Alp Uçkan soll die Umsetzung von JavaScript-Animationen, die auf Zeitleisten (Timelines) basieren, vereinfachen.

Mashi - JavaScript Timeline Toolkit

Das Mashi-Toolkit steht als Paket zum Download bereit und kann sofort eingesetzt werden. Die Bibliothek kommt mit einem eigenen Namespace, so dass es auch in Kombination mit anderen Frameworks eingesetzt werden kann. Ein Mashi-Projekt unterliegt einer bestimmten Modul-Architektur, so dass die eigentliche Logik für die Animationen in einer separaten Datei ("app.js") platziert ist. Ein Beispiel:

  • app.add(2000, function() {
  • app.set({
  • html: 'Ich bin ein Mashi-Projekt.',
  • style: {
  • backgroundColor: '#123456'
  • }
  • });
  • });
  •  
  • app.add(1000, function() {
  • });

Die Einstellung "2000" in Zeile 1 bewirkt also, dass die zweite Funktion in Zeile 10 nach 2 Sekunden durchgeführt wird. So können sehr einfach sequentielle Präsentationen erstellt werden. In der Galerie finden sich erweiterte Beispiele und Infos gibt es in der Dokumentation.

201031Aug

Webentwicklung: Traits in Javascript nutzen

Zur Erweiterung der objektorientierten Programmierung in JavaScript bieten sich verschiedene Bibliotheken und Plugins an — größere Frameworks wie MooTools oder Prototype besitzen von Haus aus schon erweiterte Möglichkeiten wie etwa ein Klassen-System. Um in JavaScript die Vorteile von "Traits" nutzen zu können, kann die kleine Bibliothek "Traits.js" genutzt werden. Bei einem Trait können Funktionen innerhalb eines Objekts gespeichert werden und anderen Funktionen verfügbar gemacht bzw. vererbt werden.

Hier ein einfaches Beispiel, bei dem ein eine Funktion als Komposition an eine andere Funktion übergeben wird.

  • function ausserhalb(wert1) {
  • return Trait({
  • aussenFunktion: function() { return wert1; }
  • });
  • }
  •  
  • function funktion1(wert2) {
  • return Trait.create(
  • Object.prototype,
  • Trait.compose(
  • ausserhalb("test1"),
  • Trait({
  • innenFunktion: function() { return wert2; }
  • })));
  • }
  •  
  • var objekt1 = funktion1("test2");
  • objekt1.aussenFunktion(); // Ausgabe: test1

Komplexere Beispiele für die Anwendung von Traits finden sich bei den Tutorials der Website. Die Trait-Bibliothek nutzt zudem die neue Object-Manipulation API von ECMAScript 5.

201030Aug

Cached Commons: JavaScript-Bibliotheken per CDN

Die aktuelle Version von jQuery oder Prototype lässt sich in Web-Projekte sehr gut über die Google Libraries API einbetten. Dort finden sich alle bekannten JavaScript-Frameworks, die als minifizierte Skript-Dateien abgerufen und eingesetzt werden können. Für viele Bibliotheken gibt es mittlerweile eine große Menge an Plugins — zudem existieren kleinere JavaScript-Projekte, mit denen sich beispielsweise Diagramme darstellen oder physikalische Effekte simulieren lassen. Für diese Art von Bibliotheken gibt es nun das Projekt Cached Commons, bei dem kleinere JavaScript-Libraries und jQuery-Plugins vorliegen und per script-Tag in einem Web-Projekt eingebunden werden können.

Cached Commons

Die Übersicht von Cached Commons ist sehr gelungen: Zu jedem Skript liegen Links zur Website und eventuellen Demos vor. Per Klick auf die jeweilige Bibliothek erhält man den JavaScript-Code. Entsprechend gibt es die Minified-Version, wenn die Bezeichnung "(min)" angeklickt wird. Der Vorteil an Cached Commons liegt vor allem in der Verwendung der GitHub-CDNs, die als schnell und zuverlässig gelten. Übrigens können Benutzer auch Anfragen für weitere Skripte an die Seite übermitteln, so dass die Listen noch wachsen dürften.

201024Aug

Cuzillion: Website-Komponenten analysieren

Ich habe beim Surfen eine interessante Seite gefunden, auf die ich früher schon einmal gestoßen war: Das Projekt "Cuzillion" von Steve Souders stellt ein nützliches Tool dar, mit dem sich verschiedene Komponenten einer Website konfigurieren und testen lassen. Zu den Komponenten zählen Inline-Skripte, verlinkte Skript-Dateien, externe Stylesheets, Bilder und iframes. Mit dem Werkzeug lassen sich beliebige Blöcke in einem fiktiven HTML-Konstrukt platzieren und anpassen. Anschließend kann die Ladezeit getestet und die optimale Reihenfolge der Komponenten ermittelt werden.

Cuzillion

Steve Souders ist ein Spezialist, was Komprimierung und Caching von Websites angeht. Ein interessanter Punkt, den er aufzählt, stellt beispielsweise die Tatsache dar, dass Firefox maximal 2 Dateien parallel herunterlädt, während Internet Explorer 8 bis zu 6 Elemente synchron laden kann. Cuzillion ist also dafür gedacht, Differenzen der verschiedenen Browser ausfindig zu machen und zu verstehen. Die Konfigurationen der Komponenten können als permanente Links verschickt und somit von mehreren Entwicklern verwendet werden.

201023Aug

Grid Designer 2: Raster und Typografie erstellen

Online-Portale und inhaltsstarke Websites benötigen ein durchdachtes Raster, um viele Inhalte unterbringen und ansprechend darstellen zu können. Für die Erstellung eines CSS-Rasters bieten sich etliche Werkzeuge an, die online abgerufen werden können (siehe Liste). Ein aktuelles Projekt, um entsprechende Raster und auch gleich die dazugehörigen Typografie-Einstellungen zu erzeugen, stellt der Grid Designer 2 von Rasmus Schultz dar. Hier können wie gewohnt die Anzahl und Größen der Spalten festgelegt werden — die restlichen Berechnungen übernimmt das Online-Tool.

Grid Designer 2

Hat man sich für eine Einteilung entschieden, können im zweiten Abschnitt etliche Anpassungen für die Textdarstellung der Seite vorgenommen werden. Hierzu zählen Einstellungen wie Schriftgröße, Schriftart, Zeilenhöhe, Laufweite sowie gängige Textformatierungen. Im letzten Schritt kann schließlich der finale CSS- und HTML-Code eingesehen und kopiert werden. Bei Bedarf können ein skalierbares Raster und auch gleich ein CSS-Reset ausgegeben werden.
Da sich mittlerweile etliche Raster-Werkzeuge im Netz finden, gibt es hier eine kleine Liste der verbreiteten Projekte:

Von Online-Diensten über Photoshop-Skripte bis hin zu Firefox-Erweiterungen ist hier alles dabei. Die Werkzeuge können bei der Erstellung von komplexen Rastern viel Zeit sparen, so dass sich ein Blick auf die einzelnen Projekte lohnt.

201021Aug

JavaScript: Ajax-Inhalt durch Deep-Links darstellen

Der Artikel bei Impressive Webs ist zwar schon etwas älter, aber vielleicht kann er bei dem einen oder anderen Web-Projekt behilflich sein. In dem Beitrag geht es um die Umsetzung von Deep-Links in JavaScript- und Ajax-Anwendungen. Das bedeutet, dass bestimmte Inhaltsbereiche über einen Hash-Link (#-Zeichen) abgerufen und dargestellt werden können. In dem Artikel wird die Programmierung einer solchen Funktionalität in JavaScript beschrieben.

Deep Linking in JavaScript and Ajax Applications

Neben dem eigentlichen JavaScript-Teil ist auch die Umsetzung der eigentlichen Seite interessant: Hier wurde eine PHP-Datei geschrieben, die verschiedene Inhalte per GET-Parameter im Stil von "?view=employee1" darstellt. Durch JavaScript wird anschließend der Teil "?view=" durch das Hash-Zeichen "#" ersetzt, so dass entsprechende Deep-Links entstehen, die bei einem direkten Aufruf den referenzierten Inhalt darstellen. Auf der Demo-Seite kann die Funktionalität angesehen werden.
Das Ganze lässt sich auch sehr einfach mit jQuery umsetzen, falls mit der Bibliothek gearbeitet wird. Hier wird der Ajax-Inhalt in den Container mit der ID "ajaxcontent" geladen:

  • $(document).ready(function(){
  • function ajaxHashContent(ajaxFile) {
  • $("#ajaxcontent").load(ajaxFile);
  • }
  •  
  • ajaxHashContent(location.hash.substr(1) + ".html");
  • });

Voraussetzung ist natürlich, dass die Ajax-Dateien die Endung ".html" besitzen und sich im gleichen Verzeichnis befinden.

201020Aug

CSS 3.0 Maker: CSS3-Effekte im Browser erstellen

Inzwischen sind Editoren, die fertigen CSS3-Code für neue Effekte generieren, massenhaft im Netz vertreten. Neben dem CSS3 Playground oder dem CSS3 Generator gibt es nun den CSS 3.0 Maker, der ebenfalls komfortable Werkzeuge für die Erstellung von neuen CSS-Effekten bietet.

CSS3.0 Maker

So können mit dem Online-Editor CSS-Codes für Textschatten, Verläufe, abgerundete Ecken, Animationen, Rotationen oder @font-face-Deklarationen erstellt werden. Die Seite bietet schöne Echtzeit-Werkzeuge, mit denen sich die verschiedenen Effekte sehr gut anpassen und einstellen lassen. Derartige Editoren sind für CSS3-Effekte notwendig, da sich genaue Anpassungen und visuelle Kleinigkeiten direkt betrachten lassen. Aktuelle CSS3-Editoren unterscheiden sich kaum von ihrer Funktionalität — für Webentwickler zählen im Endeffekt nur die Bedienbarkeit eines Editors und der persönliche Geschmack.

201018Aug

Webentwicklung: PHP-Endung bei URLs entfernen

Mit .htaccess-Befehlen lassen sich wichtige Aspekte der Suchmaschinenoptimierung umsetzen. Neben 404-Fehlerseiten oder dem Entfernen der "www"-Subdomain zählen vor allem saubere URLs zu den Vorzügen von .htaccess-Dateien. Wer eine einfache Website mit PHP realisiert hat und verschiedene Dateien in Form von "http://www.domain.com/name-der-seite.php" vorliegen hat, kann bei Bedarf die Erweiterung ".php" mit ein paar Zeilen .htaccess-Code ausblenden. Bei stuntSnippets findet sich dazu ein kleiner Artikel, in dem die Thematik behandelt wird.

stuntSnippets - Remove .php extension from URL

Neben diesem Beitrag finden sich bei stuntSnippets noch weitere interessante Code-Bausteine, so dass die kleinen Lösungen der Seite in vielen Fällen behilflich sein dürften.
Unabhängig davon folgt hier noch ein kleines .htaccess-Snippet, durch das saubere URLs mit PHP und einer Struktur im Stil von "index.php?id=seite" erreicht werden können:

  • RewriteEngine On
  •  
  • RewriteCond %{REQUEST_FILENAME} -f [OR]
  • RewriteCond %{REQUEST_FILENAME} -d
  • RewriteRule ^(.+) – [PT,L]
  •  
  • RewriteRule ^(.*) index.php?id=$1
  • RewriteRule ^(.*)/(.*) $2

Weitere nützliche .htaccess-Snippets finden sich unter Anderem hier.