-
Bläh-API
Autor: Blähbauch 08.04.10 - 11:45
Ich finde Ext JS schön, da ich nostalgisch veranlagt bin. Es fühlt sich an wie Windows 95 und programmiert sich wie Microsoft COM von 1996.
-
Re: Bläh-API
Autor: argo 08.04.10 - 13:27
Kannst du mal irgendein Code-Beispiel geben, damit wir sehen was du meinst?
-
Re: Bläh-API
Autor: der durchblicker 08.04.10 - 13:34
Ich weiss was er meint.
Durch diese elenden JSONartigen Parameterüberaben an die Lib wird der Code unglaublich schnell unübersichtlich.
Einmal nicht aufgepasst (oder vielleicht auch die API nicht wirklich verinnerlicht) und schon läuft das ganze ding nicht mehr. -
Re: Bläh-API
Autor: argo 08.04.10 - 13:46
der durchblicker schrieb:
--------------------------------------------------------------------------------
> Ich weiss was er meint.
> Durch diese elenden JSONartigen Parameterüberaben an die Lib wird der Code
> unglaublich schnell unübersichtlich.
> Einmal nicht aufgepasst (oder vielleicht auch die API nicht wirklich
> verinnerlicht) und schon läuft das ganze ding nicht mehr.
Ähm
1) Ist die Parameterübergabe per Objektliteral an Erzeugerfunktionen völlig JavaScript-üblich und JavaScript-idiomatisch.
2) Erlaubt das Parameter in beliebiger Reihenfolge
3) Wird das dadurch lesbarer, dass die Parameter benannt sind. Wenn 10 Zahlen einfach so übergeben würden wüsste keiner welche Zahl für was steht
4) Ist das hier (Pünktchen zur Formatierung im Golemforum eingefügt)
var win = new Ext.Window({
..applyTo: 'hello-win',
..layout: 'fit',
..width: 500,
..height: 300,
..closeAction: 'hide',
..plain: true,
..items: new Ext.TabPanel({
....applyTo: 'hello-tabs',
....autoTabs: true,
....activeTab: 0,
....deferredRender: false,
....border: false
..})
);
kürzer und wartbarer als beispielsweise
var win = new Ext.Window();
win.applyTo = 'hello-win';
win.layout = 'fit';
win.setSize(500, 300);
win.closeAction = 'hide';
win.plain = true;
var tabs = new Ext.TabPanel();
tabs.applyTo = 'hello-tabs';
tabs.autoTabs = true;
tabs.activeTab = 0;
tabs.deferredRender = false;
tabs.border = false;
win.addItem(tabs); -
Re: Bläh-API
Autor: der durchblicker 08.04.10 - 14:17
Wenn du meinst. Mir gefällt die zweite Variante deutlich besser.
-
Re: Bläh-API
Autor: argo 08.04.10 - 14:29
der durchblicker schrieb:
--------------------------------------------------------------------------------
> Wenn du meinst. Mir gefällt die zweite Variante deutlich besser.
Wenn du darauf stehst, ständig den Objektnamen wiederholen zu müssen. Stell dir mal vor, er wäre länger, z.B. "mainApplicationWindow" ...
Bist wohl noch in alten Java- oder C++-Denkweisen drin.
Außerdem spiegelt die erstere Variante die tatsächliche hierarchische Widget-Struktur wieder. Die Unter-'items'-Liste kann dann gleich die Unter-Widgets initialisieren, die dann wieder Unter-Widgets haben.
new Widget({
..items: [
....new Widget({
......items: [
........new Widget(),
........new Widget(),
........new Widget()
......]
....}),
....new Widget(),
....new Widget()
..]
});
Sowas hat Sun übrigens mit JavaFX versucht nachzubauen, um GUI-Entwicklung einfacher zu machen. -
Re: Bläh-API
Autor: Yeeeeeeeeha 08.04.10 - 20:55
Das geht ja im Prinzip auch wie unten, du musst halt ggf. das Attribut .initialConfig ansprechen bzw. die entsprechenden Set-Methoden.
Oder halt vorher ein config-Objekt basteln und dann in den Konstruktor schieben.
Die obere Variante halte ich persönlich aber auch für insgesamt übersichtlicher, da man durch anständiges Indent ganz gut Struktur reinbringen kann. Es ist aber extrem hilfreich, wenn man die zugewiesenen Attribute nicht direkt an die Namen ranklatscht, sondern abgesetzt und untereinander ausgerichtet notiert. Macht etwas Arbeit beim Formatieren, verbessert die Übersicht aber sehr.
Allerdings ist Ext und Code eh so eine Sache... Ich arbeite zusammen mit fünf Kollegen an einem größeren Projekt (CRM-System und angeflanschte Apps, komplett mit Ext umgesetzt) und jeder hat seine persönlichen Code Style Guidelines, was das Arbeiten mit fremdem Code irgendwie ... anstrengend macht. ;)
Ansonsten muss ich sagen, wir machen mit Ext schon ziemlich fantastische Sachen, die (nach viel Übung!) auch recht schnell von der Hand gehen. Allerdings finde ich es extrem schwer zu lernen, die Docs und Beispiele sind teilweise unvollständig und verwirrend, das Teil ist ein aufgeblähtest Monster (wenn man sich keine eigene "Distribution" zusammenstellt) und wenn man es in bestehende, komplexe Projekte nachträglich einbauen will, fressen einen die Hunde.
Achja und Debuggen ist ein Graus, da viele Fehler irgendwo tief in der ext-all.js passieren und man mit Firebug und Konsorten kaum auf den wahren Grund kommt.
Yeeeeeeeeha - Nur echt mit 2^3 e
Perl-Monk, Java-Trinker, Objective-C Wizard, PHP-Kiddie, unfreiwilliger FreeBSD-/Linux-Teilzeitadmin



