AfterRender, webloader, akce ještě před samotným generováním šablony?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mcmatak
Člen | 490
+
0
-

Určitě používáte webloader, nebo něco podobného, funkce:

připojení js nebo css a v layoutu v head se vytvoří link na js nebo css, obvykle to má i funkce jako obfus js nebo css, komprimaci, spojení do jednoho souboro a jeho kešování např.

nicméně můžete mít i komponenty které chtějí používat nějaké js, pak tedy js attachnete v attach, problém je když komponenty používáte jako widget, tedy systém o nich ví poprvé až při zpracování šablony, což už je pozdě protože js je už zkomprimovaný a nakešovaný, kešování se provedlo v layoutu

jak na nějaký workaround? rozchodit afterrender, kde bych mohl zjistit jaké komponenty budou v šabloně potřeba a tak provést jejich attach před samotným vykreslením se mi rozchodit nepovedlo

co vy na to? je snad srozumitelné o co mi jde?

Honza Marek
Člen | 1664
+
0
-

Já ti rozumim. Ale osobně takové dodatečné soubory vkládám zvlášť. Jeden CSS soubor není žádný ideál, ke kterému je potřeba se upnout. Pokudu budeš mít třeba 40 kB společné css a na každé stránce jiných 2 – 3 kB navíc, tak připojením těchto souborů do hlavního CSS rozhodně data neušetříš.

mcmatak
Člen | 490
+
0
-

tak tady jde spíš o to js, obvykle mi to vyjde, že máš stejně těch souborů 3–4 max 5 na celý projekt, ale spíš mi jde o jednoduché zapojení modulu do projektu, modulu který js potřebuje

xificurk
Člen | 121
+
0
-

Jo, něco podobného už jsem psal… https://forum.nette.org/…vani-widgetu?…

Hlavní nevýhodu současného stavu vidím v tom, že pro použití komponenty nestačí „jen“ nakopírovat její kód někam do app, vytvořit továrničku a použít {widget componentXYZ}, ale je potřeba myslet na to, že některé komponenty potřebují externí css, js. Je to další věc, na kterou je potřeba myslet. Rozhodně se mi současný stav příliš nezamlouvá a přidávám se k mcmatakově požadavku.

Honza Kuchař
Člen | 1662
+
0
-

Já také, ale to už jsme řešili na poslendní sobotě. Protože šablona se kompiluje, tak by bylo fajn, kdyby se při překládání informace o tom, kde je jaký widget někam ukložila. Tím by se přes nějaké statické metody daly načíst ty externí soubory.

David Grudl
Nette Core | 8129
+
0
-

V podstatě podobně interně fungují „nové“ snippety. Informace získané z kompilování šablony se využívají ještě před započetím renderování. Teď jde jen o to, jak to zobecnit, aby se na stejný mechanismus daly připínat vlastní handlery, například pro natahování CSS a JS souborů.

Vyki
Člen | 388
+
0
-

Nevím jestli to chápu dobře, ale jednalo by se o novou fázi v životním cyklu aplikace?