Projekt

Allgemein

Profil

Wiki » Historie » Version 2

Jan Büren, 01.06.2022 15:58

1 2 Jan Büren
** seite1 **
2
3
4
5 1 Werner Hahn
h1. hat das Auswirkungen ob ich in Templates [%- INCLUDE oder [% INCLUDE mache und wenn welche? 
6
7
nein
8
das extra minus sagt dem template system, dass das \n davor beim interpolieren gelöscht werden soll
9
so vermeidest du duzende newlines im generierten html code
10
funktional ist das identisch
11
interessantere unterscheidung ist INCLUDE vs PROCESS. die machen auch beide das gleiche, aber INCLUDE macht nen neuen variablen namespace auf, während PROCESS den aktuellen namespace weiterverwendet. das klingt trivial, ist aber ein riesiger performance unterschied, wenn du das in schleifen benutzt
12
solange dein subtemplate selber keine variablen _setzt_, also SET benutzt, solltest du immer PROCESS nehmen
13
Jein, Sven.
14
ok
15
mosu weiß mehr und erklärt
16
Weniger offensichtlich aber genau so betroffen: FOREACH
17
stimmt, implizites set
18
woernie: Wenn du ein Template mit INCLUDE inbindest, dann wirken sich sämtliche Änderungen an Variablen innerhalb des Sub-Templates auch auf das Haupttemplate auf.
19
Wenn du also z.B. im Haupttemplate so etwas machst: [% FOREACH row = SELF.items %] [% INCLUDE '_row.html' %] [% END %]…
20
…und im Sub-Template irgendwo [% FOREACH row = some_array %]…
21
…so geht das garantiert in die Hose.
22
äh
23
Quark
24
Ich meinte PROCESS in meinem Beispiel.
25
Also genau andersrum, als gorash sagt?
26
INCLUDE = alle Variablen werden kopiert, langsam, aber Änderungen im Sub-Template haben keine Auswirkungen.
27
PROCESS tut das halt nicht
28
PROCESS = schnell aber gefährlich, weil Änderungen im Sub-Template sich auf alles andere auswirken
29
Das gleiche gilt nicht nur für Sub-Templates (also Dateien), sondern auch für Blöcke, die mit [% BLOCK name %] … [% END %] deklariert und danach mit INCLUDE/PROCESS benutzt werden.
30
Meine persönliche Faustregel ist, dass alles, was in einer Schleife eingebunden wird, eher PROCESS sein sollte, alleiun aufgrund der Geschwindigkeit. Und darauf müssen die Sub-Templates dann halt designet sein.
31
Wenn man aber bei einer kompletten Seite ein gewisses Sub-Template nur ein einziges Mal einbindet, dann ist der Performanceunterschied halt nicht wirklich entscheidend (es sei denn, man hat wiederum sehr viele von solchen Sub-Templates).
32
der performance hit ist leider wirklich nicht trivial. ich hab das das erste mal bei cvar templates pro position gemerkt, und ich glaube da war der overhead im bereich 200ms für 10 positionen
33
subtemplate als block schreiben und einmal einbinden hilft tatsächlich