Projekt

Allgemein

Profil

Technisches » Historie » Version 1

Jan Büren, 01.06.2022 16:01

1 1 Jan Büren
h1.  Technisches 
2
3
h2. Frage zu TT: hat das Auswirkungen ob ich in Templates [%- INCLUDE oder [% INCLUDE mache und wenn welche? 
4
5
nein
6
das extra minus sagt dem template system, dass das \n davor beim interpolieren gelöscht werden soll
7
so vermeidest du duzende newlines im generierten html code
8
funktional ist das identisch
9
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
10
solange dein subtemplate selber keine variablen _setzt_, also SET benutzt, solltest du immer PROCESS nehmen
11
Jein, Sven.
12
ok
13
mosu weiß mehr und erklärt
14
Weniger offensichtlich aber genau so betroffen: FOREACH
15
stimmt, implizites set
16
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.
17
Wenn du also z.B. im Haupttemplate so etwas machst: [% FOREACH row = SELF.items %] [% INCLUDE '_row.html' %] [% END %]…
18
…und im Sub-Template irgendwo [% FOREACH row = some_array %]…
19
…so geht das garantiert in die Hose.
20
äh
21
Quark
22
Ich meinte PROCESS in meinem Beispiel.
23
Also genau andersrum, als gorash sagt?
24
INCLUDE = alle Variablen werden kopiert, langsam, aber Änderungen im Sub-Template haben keine Auswirkungen.
25
PROCESS tut das halt nicht
26
PROCESS = schnell aber gefährlich, weil Änderungen im Sub-Template sich auf alles andere auswirken
27
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.
28
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.
29
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).
30
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
31
subtemplate als block schreiben und einmal einbinden hilft tatsächlich