Latte – source maps (stupid Flanders a predmet kratsi nez 25 znaku)
- juzna.cz
- Člen | 248
Intro
Google Chrome ma paradni featuru zvanou Source maps, pomoci ktere dokaze mapovat zkompilovany/zkomprimovany kod zpet na puvodni. Diky tomu muzete napr.:
- spoustet minifikovany JavaScript ale vyjimky videt jakoby byly v originalnim zdrojaku;
- spoustet JS vznikly kompilaci CofeeScriptu, a ladit ho jako puvodni Coffee;
- to same pro CSS / SASS atd… (jeste neimplementovano).
Motivation
Bezne pouzivame sablony napsane v Latte, ale jakmile je tam nejaka chybka (napr. pouziti nedefinovane promenne, spatne argumenty pro funkci,…), Ladenka nam ukaze chybu ve zkompilovanem a hnusne zpatlanem PHP kodu. Myslim ze uz chapes, jak to spolu souvisi, ze? Dal snad neni co vysvetlovat.
Example
Ted jako v kazdem spravnem teleshoppingu nasleduji dve typicke ukazky:
Implementation
Brzo bude pull, musim to trosku porovnat a udelat testy.
Nyni muzete tleskat. Dekuji. Mate-li nekdo pripominky nebo dotazy, hlaste se prosim.
Editoval juzna.cz (30. 3. 2012 23:50)
- juzna.cz
- Člen | 248
Tak, uhladil jsem implementaci, ale jeste mi
tam pada jeden test (protoze v jednom pripade vygeneruje konec radku
navic…).
Pri beznem testovani zda se vsak funguje vsecko v poradku
Editoval juzna.cz (31. 3. 2012 0:47)
- David Ďurika
- Člen | 328
tak teraz sa latte moze zkompilovat aj do minifikovanej verzie…
Editoval achtan (31. 3. 2012 8:30)
- juzna.cz
- Člen | 248
Momentalni implementace ale neni vubec pekna, chtelo by to zrefaktorovat, jen stale premyslim jak. Nelibi se mi tam krizova provazanost Debuggeru a Latte, radeji bych to vyclenil nekam „ven“.
Stejna source-mapa by se pak dala pouzit i u Neonu, ale to zase @dg rikal ze uz nejak chysta sam.
- juzna.cz
- Člen | 248
Vcera jsme toto tema nakousli na #posobota, tak se k tomu vracim a chtel bych to dotahnout.
Zjistil jsem, ze zatim nejvetsi problem mi dela
Nette\Templating\Helpers::optimizePhp()
, ktera odmazava nepotrebne
prazdne radky ve vygenerovanem PHP kodu. IMO bychom tuto
mikro-optimalizaci mohli odstranit, stejne je jeji vyznam prakticky
nulovy. Diky tomu by se source-mapy daly udelat rozumne.
(Akorat ze to aktualne rozbije cca 20 testu :D)
Nejake namitky? (prosim, namitejte pokud vas cokoliv napadne)
Editoval juzna.cz (29. 4. 2012 12:12)
- juzna.cz
- Člen | 248
Spatne sem se vyjadril – veskere optimalizace, ktere provadi
optimizePhp()
jsou bezproblemove, az na tu jednu – odstranovani
nadbytecnych koncu radku.
Prakticky potrebuju, aby se cisla radku behem optimalizace nezmenila
(jinak by tato optimalizace musela delat dalsi source mapu, coz je zbytecna
komplikace).
Jeste dotaz na vsechny: pouzivate nekdo jine filtry, nez je Latte? Muzu poprosit o nejake info/link.
- Tomáš Votruba
- Moderator | 1114
jtousek napsal(a):
Můj případ to sice není, ale možná se najdou tací kteří používají Haml
Najdou :). Možná tam najdeš i kousek inspirace, jak ony konce řešit.
- juzna.cz
- Člen | 248
Zrefaktoroval jsem to a napsal jsem nejake testy. Par testu tam mam rozepsanych, protoze si nejsem moc jistej, jak takovyto veci pekne otestovat – kdyby nekoho neco napadlo a napsal by to, budu rad.
Zjistil jsem, ze optimizePhp()
mi to porad rozbiji, proto jsem
ho docasne uplne vyhodil ;) Krom toho se mi to ted zda, ze uz to
funguje pekne.
Work in progress, stay tuned
- juzna.cz
- Člen | 248
Kdyby se nekomu povedlo „opravit“ to optimizePhp
tak, aby
zachovavalo cisla radku, tak budu prevelice rad. Sam sem se v tom uz tak
zamotal, ze se z toho asi nevymotam. Komunito, pomuzes?
Hint: zkuste si to zakomentovat, nechat si zkompilovat par sablon a
vykopirovat si cache bokem. Pote optimizePhp
zase zapnout a
porovnavat vysledky
- Jan Tvrdík
- Nette guru | 2595
juzna.cz wrote: pouzivate nekdo jine filtry, nez je Latte? Muzu poprosit o nejake info/link.