Zum Inhalt springen

Extension mit AJAX: eID und/oder xajax?

Erstellt am 23. Juli 2007 · 32 Antworten · letzte Antwort am 24. Juli 2007 · Seite 1 von 2

Tags: Frage

Unbekannter Benutzer ·

Hi allerseits

Ich möchte eine eigene Extension schreiben, die im Frontend mit AJAX-Funktionen arbeitet und so bestimmten Inhalt ohne vollständiges Laden der Seite verarbeitet. Als AJAX-Library will ich "prototype" verwenden.

Jetzt stellt sich die Frage, ob für diese Umsetzung xajax eingesetzt werden oder ich das ganze per eID lösen soll.

Hat jemand bereits Erfahrungen damit sammeln können? Was sind eure Empfehlungen? Vor- und Nachteile?

Besten Dank für eure Hilfe.

Gruss
Pantelis

Stoneage ·

Eigentlich haben eID und Ajax nichts miteinander zu tun. eID ist ein Killbit für Typo3 um zb. die BE-Klassen bei einem FE-Aufruf nicht zu laden (Geschwindigkeit-und Speicher Management). Für Ajax brauchst Du diesen Overhead nicht, Du brauchst nur in Deiner Extension den Typo3-Cache auszuschalten und bei jedem Ajax-Request die richtige HTTP-Head-Anwort zu senden. Also eigentlich wie bei xAjax. Aber das gleiche kannst Du auch mit Prototype machen, oder habe ich da was falsch verstanden?

Unbekannter Benutzer ·

Danke Tetramatrix. Indirekt hat eID schon etwas mit AJAX zu tun. Ohne eID müsste man den ganzen Overhead, wie du es beschrieben hast, für Ajax-Aktionen mitgeben, was nicht sinnvoll ist.

Vielmehr will ich nun erfahren, welche Unterschiede es zwischen der Umsetzungsvariante "eID" und der Extension "xajax" gibt. Worin liegt also der Unterschied? Was spricht für, was gegen die jeweiligen Lösungsansätze? Wird bei xajax auch der ganze Overhead mitgegeben?

Stoneage ·

Ohne jetzt groß nachzuschauen: Mit Overhead meine ich den eID-Overhead, eID-Get-Variable, externe Datei etc, was ja wiederum ein Unsicherheitsfaktor dastellt, je nach Betrachtungsperspektive. Wenn Du den xAjax-Weg gehst brauchst Du das ganze Zeug nicht.

Unbekannter Benutzer · · Beste Antwort

Also empfiehlst du, xajax einzusetzen? Oder wie integriert man AJAX-Funktionalität im Frontend, wo einzelne Inhalte abgerufen/verarbeitet werden? Ist xajax 1st choice? Gibt es andere Lösungsansätze?

just2b ·

Hallo,

eID ist mit Sicherheit schneller als xajax, man muss halt mehr selber machen. Zudem hat xajax Probleme mit gecachten Extensions

georg

Unbekannter Benutzer ·

ich staune immer wieder ab dir just2b 🙂

zu eID: Was ist deine Meinung bezüglich Sicherheit? Wie beurteilst du den Lösungsansatz mit eID für AJAX-Anwendungen im Frontend?

jenses ·

xajax ist einfach zu integrieren, funktioniert aber nicht 100%ig im IE.
Um das herauszufinden reicht es, die xajax_tutorial - Extension zu installieren und in verschiedenen Browsern zu testen.
Ähnliche Probleme gab es mit jQuery.
Nach Anfangsschwierigkeiten habe ich nun die ext-Bibliothek genutzt (als TYPO3-Extension extJS ).
Die ist sehr mächtig (leider auch einige kB groß) und bietet viele Features.
Anfangschwierigkeiten bedeutete in meinem Fall, nicht um bestimmte Eigenmächtigkeiten des IE bei der Vergabe von ID´s an Metatags zu wissen.
Es ist zu empfehlen, alle ID´s mit einem Extension-Prefix zu versehen.
Außerdem kommt es hin und wieder zu Problemen mit kompexeren CSS-Layouts.
Es ist empfehlenswert, ext und einige Funktionstests schon beim Erstellen von XHTML und CSS dabei zu haben, um diese Schwachstellen zu erkennen und noch rechtzeitig umschiffen zu können.

Unbekannter Benutzer ·
just2b schrieb

mit sicherheit hat das doch nichts zu tun.. da muss man genauso drum schauen wie sonst auch

Wenn ich Tetramatrix richtig verstanden habe, hat er es erwähnt. Dann ist das Thema "Sicherheit" abgehackt.

Unbekannter Benutzer ·

@jenses:

Wie sieht dann dein Action-Call beim Formular aus?
z.B. index.php?id=20

Wie holst du dir dann nur die einzelnen Inhalte ohne den ganzen Überfluss?

steffenk ·

seit wann werden denn Themen abgehackt ? 😃

Ich kann nur empfehlen, alle Methoden zu testen. Es gibt für jede pro und kontra.

Wichtig ist auch immer auf fallback zu achten, d.h. es muss auch ohne JS funktionieren.

Ich persönlich halte es wie jenses und preferiere extjs.

zum callback - das funktioniert mit extjs anders, da wird die Aktion einem Event zugeordnet.

Unbekannter Benutzer ·
steffenk schrieb

seit wann werden denn Themen abgehackt ? 😃

In der Schweiz geht das 😉 Schweizer Redewendung

steffenk schrieb

Wichtig ist auch immer auf fallback zu achten, d.h. es muss auch ohne JS funktionieren.

In meinem Fall muss es nicht, da Javascript vorausgesetzt wird. Youtube macht das auch (nicht, dass es eine Referenz sein sollte). Aber Javascript ist Voraussetzung.

steffenk schrieb

zum callback - das funktioniert mit extjs anders, da wird die Aktion einem Event zugeordnet.

Das ist klar, unklar aber, wo hier die serverseitige Schnittstelle greift.
Mal angenommen beim Event "onClick" werden Daten in der Datenbank abgespeichert. Dann muss ich doch ein Ziel-URL angeben, der die nötigen Aktionen durchführt. Bei xajax funktioniert das irgendwie automatisch, bei eID macht man es selber. Oder sehe ich das völlig falsch? Wer klärt mich auf? 🙂

just2b ·

bei eID machst du alles selber, du kannst auch einfach mootools & co nehmen und damit die requests in Kombination mit eID machen.. so mach ich das zB 😉

georg

Stoneage ·

Also ich finde es Schade das hier immer noch über eID gesprochen wird. Das hat ja nun wirklich gar nichts mit Ajax zu tun. Und ist auch kein Zeichen für Professionalität. Der einzige Vorteil denn ich von prototype kenne ist, das es Fenster mit Ein-und Ausblend Effekt kennt. Das kann man natürlich auch selber von Hand in xAjax nachtragen. Also lautet meine Empfehlung xAjax. Die anderen Libs kenne ich leider nicht.

Unbekannter Benutzer ·
Tetramatrix schrieb

Also ich finde es Schade das hier immer noch über eID gesprochen wird. Das hat ja nun wirklich gar nichts mit Ajax zu tun.

Ich finde, eID und AJAX haben indirekt doch miteinander etwas zu tun. Ich brauche eID nicht, um mit Ajax zu arbeiten. eID bewirkt ja nur, dass nur das Nötigste ausgeführt wird, den Rest muss man selber holen.

Wenn ich nun mit AJAX einen bestimmten Inhaltsteil auf meiner Seite aktualisieren will, dann will ich sowenig Overhead wie möglich verursachen. Ich weiss nicht, ob xajax Overhead erzeugt, darum schweige ich lieber.

xajax inkludiert auch prototype, so viel ich weiss.

Nochmals: es ging/geht mir von Anfang an darum, die Unterschiede der beiden Lösungsansätzen zu erfahren.

Stoneage ·

Es geht mir hier in erster Linie darum einen Lerneffekt zu erzielen. eID ist absolut nicht notwendig für Ajax-Requests. Und was nicht notwendig ist sollte man auch nicht einbauen. Außerdem haben xAjax und prototype überhaupt nichts miteinander zu tun. xAjax lädt keine prototype-lib nach. Mir ist unerklärlich wie Du auf diesen Gedanken gekommen bist. Also mit Deinem Wissenstand würde ich Dir raten echt xAjax zu nehmen. Es läuft einfach super. Außerdem ist der Geschwindigkeitsgewinn von eID nur am Anfang wirksam (onload). Und das nur auf dem Server. Client-Seitig ist ja Ajax dafür da nur bestimmte Teil der Webseite nachzuladen und nicht weil es schöner ist, dass die Seite keinen Reload mehr hat. Wenn Du unbedingt Speed haben willst, kannst Du ja auch die JS-Libs noch packen. Das würde sich jedenfalls Client-Seitig auswirken. Zudem musst Du bedenken, dass Du mit eID noch ein weiteres Feature von Typo3 benutzt und Dich zusätzlich davon abhängig machst.

@zu den anderen Kollegen hier: Mir ist echt schleierhaft warum ihr eID und Ajax in einem Atemzug nennt. Das kann ja nur sowas wie Schleichwerbung sein. Zumal Ajax sowieso nur ein Buzzword für eine Technologie ist die es schon Jahre vorhergab (XHTML-Request). Wie soviele anderen Technologien die es schon Jahre auf anderen Plattformen gab und die erst jetzt Einzug in sogar namhafte Produkte finden (z.b. Code-Falting).

Unbekannter Benutzer ·
Tetramatrix schrieb

Es geht mir hier in erster Linie darum einen Lerneffekt zu erzielen. eID ist absolut nicht notwendig für Ajax-Requests. Und was nicht notwendig ist sollte man auch nicht einbauen. Außerdem haben xAjax und prototype überhaupt nichts miteinander zu tun. xAjax lädt keine prototype-lib nach. Mir ist unerklärlich wie Du auf diesen Gedanken gekommen bist. Also mit Deinem Wissenstand würde ich Dir raten echt xAjax zu nehmen. Es läuft einfach super.

Ok, sorry, mein Fehler oder besser gesagt ein Versehen. Hab die Extension "danp_feajax" angeschaut, die mit xajax arbeitet und dort wird "prototype" eingebunden.

Komisch: Obwohl eID nichts mit AJAX zu tun hat, wird sie in der Extension "danp_feajax" in Verbindnug mit xajax benutzt.

Nochmals: gehen wir von der Behauptung weg, dass eID unbedingt erforderlich ist, um AJAX-Anwendungen zu erstellen.

@Tetramatrix:
Wieso stellt Kaspar überhaupt das Konzept der eID vor, wenn xajax die Aufgabe ja bestens löst? Noch immer sind die Unterschiede nicht klar. Und ich spreche hier für einige Entwickler, dass viele gerne AJAX-Funktionalität einbauen möchten, aber in der Tat nicht wissen, wo ansetzen.

steffenk ·

man sollte wissen, das Ajax bereits uralt ist - es erlebt im Moment einen richtigen Aufschwung, da alle im Zuge von Web 2.0 davon schwärmen.

@Tetramatrix - die Verbindung ist klar - Kaspar hat eID eingeführt, um einen "Ansprechpunkt" im TYPO3 Framework für HTTP-Requests zu haben. Er hat eID also in Verbindung mit Ajax und seinem legendären whiteboard "erfunden".
eID ist also eine gute Methode um TYPO33Seiten im HTTP-Request aufzurufen.

Xajax braucht das nicht, es definiert eigene Funktionen für den Request. Und mit Prototype hat xAjax nix am Hut.

Man kann auch alles ohne eID machen, aber die Klasse stellt schon die notwendigsten Typo3-Funktionen zur Verfügung.

extJS ist in meinen Augen ein zukunftsweisendes Framework und ist unbedingt ein Blick wert. Zumal es jetzt auch die TYPO3-Extension gibt. Als einfaches Demo habe ich die Extension skt_contenttabs ins TER gestellt.