Extjs ist eine javascript-Library zur Erzeugung von "reichen" Benutzeroberflächen. Das heisst ansprechende Dialoge und grafische Elemente im Browser. Diese und einige andere Libraries habe ich unten in der Link-Sektion aufgeführt.
Nachdem ich also die Beispiele von extjs ausprobiert und für vielversprechend erachtet habe, möchte ich das ganze mal in einer existierenden Anwedung testen. Hier fangen die Probleme an: das Deployment der Libraries und Ressourcen (Bilder, CSS) klappt nicht auf Anhieb. Ich denke von den Erfahrungen dabei könnt ihr vielleicht profitieren - los gehts.
Include-Order, Stupid!
Das erste Problem ergab sich bei der Einbindung der extjs-Dateien in die HTML-Seite. Obwohl in der extjs-Dokumentation darauf hingewiesen wird, daß die Reihenfolge der Includes von Bedeutung ist, habe ich mich nicht daran gehalten. Das führt dazu, dass Ext komplett unfunktional ist. Für die Fehlersuche brauchte ich zwei Stunden.
Folgendes Beispiel funktioniert, wenn man keine weiteren GUI-Libraries anbindet:
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" >
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all.js"></script>
Kleiner Tip am Rande: wie kann man HTML-Quelltext posten:
Deployment
Welche Dateien von extjs braucht man und wo packt man diese hin.
Um ehrlich zu sein, mit diesen Fragen habe ich mich viel zu lange beschäftigt - aus folgenden Gründen:
- ich wollte das Deployment klein halten - also nur die nötigsten Dateien ausliefern (ich brauche weder verschiedene Vista-Themes, noch alle Adapter für Fremdbibliotheken)
- ich dachte, das o.g. erste Problem wäre auf das Deployment zurückzuführen
- weil ich Angst hatte, dass es zwischen den extjs JS-, CSS- und Grafik-Dateien komplizierte Pfadabhängigkeiten gibt
Zu 1. Ok ok - aber es reicht, wenn man die Quellen, Examples, Build und Docs rauswirft - da spart man schon ca. 15 MB. Der Rest ist 4.5 MB. Das ist dann wirklich kaum noch der Mühe wert.
Zu 2. - es lag ja offensichtlich nicht am Deployment, sondern an der Include-Order
Zu 3. Die einfache Lösung lautet: das extjs-Verzeichnis auspacken und mitliefern. Ggf. noch ein paar Docs löschen (siehe oben Punkt 1) und fertig. Warum kompliziert, wenn es einfach geht. Durch die Beibehaltung des extjs-Verzeichnis-Layouts stimmen die Referenzen. Man muss allerdings die diversen js- und css-Dateien zum importieren aus den Unterverzeichnissen laden - kein Problem.
Einen Vorteil hat das Deployment des kompletten extjs auch noch. Beim Versionswechsel (und extjs ist sehr vital!) hat man es einfacher. Nur neues Verzeichnis auspacken, fertig. Sollte es neue interne Abhängigkeiten geben, sind diese schon drin.
Links