ExtJS vs. SenchaTouch vs. Responsive Web Design

Auf der letzten Sencha-Konferenz (SenchaCon13) hatte ich eine interessante Diskussion über den Umgang mit Responsive Web Design in Verbindung mit ExtJS und/oder SenchaTouch. Zumindest hofften viele Teilnehmer auf eine Verschmelzung von ExtJS und SenchaTouch, um nur noch ein Framework für alles zu haben.
Meiner Meinung nach versuchen viele Entwickler, Dinge zusammenzubringen, die nie zu einem brauchbaren Ergebnis führen können. ExtJS, SenchaTouch und Responsive Web Design in einem Satz zu nennen, zeigt bereits das Missverständnis dieser Werkzeuge.
ExtJS ist ein Full-Stack-Application-Framework. Es erhebt nicht nur den Anspruch, ältere Browser zu unterstützen (mindestens IE8 bis 2014/15) und JavaScript für Entwickler weniger browserabhängig zu machen. Es unterstützt auch Dinge, die auf mobilen Geräten nicht nutzbar sind. Es ist für Desktops gemacht (die auch mehr Leistung haben, um eine Website darzustellen). Sencha wird einige Touch-Features hinzufügen, diese richten sich aber an leistungsstärkere Touch-Geräte (Notebooks/Desktops mit Touchscreen). Das mächtige Layout-System (Border-, VBox-, HBox-, …-Layouts) ist einer der Hauptgründe, sich für ExtJS zu entscheiden.
SenchaTouch ist ein JavaScript-Framework, das speziell für mobile Browser gemacht ist. Anfangs nur für WebKit-Browser. Aktuell läuft es auf iOS, Android, Blackberry 10 und mit Windows Phone 8 nun auch auf dem ersten nicht WebKit-basierten Browser. Es bietet weniger Features als ExtJS, überhaupt keine Unterstützung für ältere/andere Browser, eine andere Art von Charting (Canvas statt SVG/VML), …
Responsive Web Design hingegen ist kein Framework und schon gar nicht einfach nur eine Frage frei fließender Elemente. Was Responsive Web Design bedeutet, können Sie bei wikipedia nachlesen. Angenommen, Sie planen die Entwicklung einer Anwendung und haben sich für ExtJS auf dem Desktop entschieden: Responsive Web Design ist nicht das, wonach Sie suchen, wenn Sie einige Anwendungsfeatures auf ein Telefon/Tablet bringen möchten. Es ist nicht nur das Layout-System, das scheitern wird, weil Sie mehr oder weniger feste Positionen für Elemente definiert haben. Auch der CPU- und Speicherverbrauch ist für kleine Geräte zu hoch. Die Art, wie Sie eine Anwendung in Sachen UI/UX gestaltet haben, passt nicht zu einem mobilen Gerät. Denken Sie nur an Ihren Daumen, der einen Link, eine Zeile, ein Icon oder was auch immer berührt – statt eines winzigen Mauszeigers auf Ihrem Desktop-Bildschirm.
Wenn Sie Teile Ihrer Anwendung auf mobilen Geräten sehen möchten, verwenden Sie SenchaTouch. Im besten Fall können Sie zumindest einige JavaScript-Codeteile gemeinsam nutzen, wenn Sie diese in Packages organisieren (mit Sencha Command).
Wenn Sie um jeden Preis responsive sein müssen, dann sind ExtJS oder SenchaTouch definitiv nicht das richtige Geschütz, um auf dieses Ziel zu feuern. Überdenken Sie Ihre Entscheidung. Sie könnten über AngluarJS nachdenken – um nur eines von vielen anderen zu nennen –, um Ihr Problem zu lösen.
Um das Thema abzuschließen: Eine Anwendung ist konfigurierbar, nicht responsive. Eine Website hat andere Anforderungen als eine Anwendung.