WebsiteBaker Support (2.8.x) > Diskussion über WB (closed)
Template Engine, Sinn und Unsinn.
NorHei:
Diskussionen über Template Engines und dern Sinn und Unsinn hatten wir ja schon öffter, aber jetzt hatten wir in einem anderen Thread eine doch recht fruchtbare Diskussion zu dem Thema.
Dabei bin ich selbst als hartnäckiger Kritiker an dem Punkt angelang wo ich sagen mag: "Halt , hier macht das Sinn"
https://forum.WebsiteBaker.org/index.php/topic,25276.0.html
Da die Diskussion um TEs aber nicht in einen Modulthread gehört führ ich Sie mal Hier weiter.
Kurzfassung:
Also das Problem war das Modul Members welches genauso wie das Newsmodul und viele andere die Möglichkeit bietet im Backend eingene kleine Templates für die Erzeugung der Seite anzubieten.
Zur Zeit wird mit str_replace() ein kleines Set von "Templatevariablen" angeboten die aber im prinzip sehr wenig Flexibilität Anbieten. Eine Templateengine kann das ganze natürlich wesentlich flexibler gestalten hat aber eventuell eine hohe Lernkurve die für das bedienen eines Modul backends eher nicht geeignet ist. Zudem entsteht durch das häufige aufrufen der in der view.php jede Menge Speicherbedarf und die Geschwindigkeit der Seite bricht kräftig ein.
http://web-developer-blog.com/2012/10/template-engines-im-vergleich-teil-3.html
http://www.phpcomparison.net/index.php?template%5Bphp%5D=on&template%5Braintpl%5D=on&template%5Bsmarty%5D=on&template%5Btwig%5D=on&test=assign
Jetzt stellte sich die Frage ob es eine Gute Idee wäre die TE einfach beim speichern der Seite das fertig compillierte Template speichern zu lassen und damit WB viel Arbeit zu sparen und dafür zu sorgen das alles schön schnell rennt.
Es Wurde darauf verwiesen das TWIG dies wohl beherscht allerdings enthüllt ein blick in die Doku das das was da Compilliert wurde zwar PHP ist aber das es beileibe nicht frei von Overhead ist .
--- Quote ---The generated template for a Hello {{ name }} template reads as follows (the actual output can differ depending on the version of Twig you are using):
--- End quote ---
--- Code: ---/* Hello {{ name }} */
class __TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb extends Twig_Template
{
protected function doDisplay(array $context, array $blocks = array())
{
// line 1
echo "Hello ";
echo twig_escape_filter($this->env, $this->getContext($context, "name"), "ndex", null, true);
}
// some more code
}
--- End code ---
Als PHP template wäre das ein :
--- Code: ---Hello <? echo $name ?>
--- End code ---
Und escaped wird gefälligst vorher(Escape Filfer ist nicht immer automatisch gewünscht).
Keine Frage was da schneller rennt.
(Da wundert es auch nicht das die meisten TE ohne Caching immer noch deutlich langsamer und speicherhungeriger sind als PHP)
Was ich mich jetzt frage ist , gibt es TE die wirklich simplen PHP code erzeugen kann?
Wenn man den nämlich dann speichern würde müsste das ganze doch eingendlich ohen Overhead rennen können.
cwsoft:
Hallo,
--- Quote ---Was ich mich jetzt frage ist , gibt es TE die wirklich simplen PHP code erzeugen kann?
--- End quote ---
Für kleinere Projekte habe ich in der Vergangenheit gerne die Template Engine (TE) Savant benutzt. Diese verwendet PHP selbst, benötigt also keine "Lernkurve". Recht schnell und resourcenschonend ist wohl auch die TE Haanga (aber nie selbst benutzt).
Ich für mich unterscheide meist folgende Anwendungen:
Ist die Ausführung von PHP Code in Templates erlaubt, benutzte ich in der Vergangenheit meist PHP oder Savant. Ist PHP in Template nicht gewünscht, verwende ich fast immer Twig. Auch bei grösseren Projekten wirkte sich das oft nachgesagte langsames "parsen" bei TE dank dem Cachen der Seiten bisher nie wirklich aus.
Seit einiger Zeit verwende ich fast ausschliesslich Twig (bei ganz einfachen Projekten, bei denen Twig nicht bereits zur Verfügung steht, weiche ich in ganz selten Fällen auf pures PHP aus). Meine Vorliebe zu Twig hat auch damit zu tun, dass sich Twig nahe an Pythons Django TE ausrichtet (das ist aber eine andere Sache).
Denke Links zu Templateengines gibt es im Netz zuhauf, einige ausgesuchte hier:
http://fabien.potencier.org/article/34/templating-engines-in-php
http://it-republik.de/php/news/Template-Engines-vs.-PHP-058161.html
http://www.webresourcesdepot.com/19-promising-php-template-engines/
Gruss
easyuser:
Man sollte bei dem Hin-Und-Her der Performance auch eine Sache nicht außer Acht lassen:
PHP Code selbst wird in C++ "umgewandelt", dann in "Assembler", dann geht's erst zur CPU. Nicht zu sprechen von den Datenpaketen, die alle auf ca. 1000Byte verkleinert werden (OSI-Schicht). Noch gar nicht zu sprechen, von den Zig-Routern, die zwischen A und B liegen, Firewalls, etc.
Das heißt das, was ein Computer/Server/Netzwerktechnik leistet ist im Vergleich zu dem "umständlich" erscheinenden Twig-Code eher zu vernachlässigen.
frankwis:
Ich halte gar nichts von Template Engines. Nach meinem Verständis ist PHP selber die beste.
--- Code: ---<?= $variable ?>
--- End code ---
kann ich überall einbauen, aufwändige Funktionen auslagen und das war´s.
DarkViper:
Zupf mir jetzt nicht gleich den Kopf ab, wenn ich Deinen Post leicht korrigieren muss. Ich weiss, dass Du das Richtige meintest. ;-)
--- Quote from: easyuser on January 07, 2013, 01:01:05 PM ---... PHP Code selbst wird in C++ "umgewandelt", dann in "Assembler"
...
--- End quote ---
Ersetze bitte 'Assembler' durch 'Maschinencode' dann passts wieder. ;-)
Assembler ist auch nur eine, direkt an die Maschine angepasste, 'Hochsprache', die erst mal in reinen Binärcode übersetzt werden muss. [ geschrieben wird da z.B. MOV A,B und im Programmspeicher wird nach der Übersetzung dazu nur der HexWert C4 abgelegt. (ist nur ein nur Beispiel, keine echte Anweisung)]
--- Quote from: easyuser on January 07, 2013, 01:01:05 PM ---Das heißt das, was ein Computer/Server/Netzwerktechnik leistet ist im Vergleich zu dem "umständlich" erscheinenden Twig-Code eher zu vernachlässigen.
--- End quote ---
Ich denke, das wolltest Du auch umgekehrt sagen:
Das heißt dass der "umständlich" erscheinende Twig-Code, im Vergleich zu dem was ein Computer/Server/Netzwerktechnik zur Auslieferung einer Seite sonst noch leisten muss, eher zu vernachlässigen ist.
Navigation
[0] Message Index
[#] Next page
Go to full version