jak znovupoužitelně vyčlenit část aplikace včetně js, obrázků a css
- Prado
- Člen | 21
Jakým způsobem v čistém Nette znovupoužitelně oddělit různé části aplikace?
V nejjednodušším případě, bude mít aplikace nějakou administraci a frontend.
Administraci budu schopen používat na podobných projektech znovu, proto bych ji přesunul do vlastního modulu. Jenomže tím bych dal stranou jen model a presentery se šablonami, neoddělil bych tím js a css, dále bych při nasazení musel nastavovat routy.
Existuje způsob, jak docílit kompletního oddělení „modulu“ tak, aby
byl snadno znovupoužitelný?
Existuje způsob, jak oddělit do „modulu“ pro něj specifické css
a js?
Prostě hledám způsob, jak vývoj administrace přesunout ideálně úplně
bokem od frontendu, ale klientovi nasazovat současně. A přitom mít možnost
v ní např. opravovat chyby a snadno tyto opravy distribuovat všem, bez
rozkopírovávání x souborů, což dnes „modul“ zdá se mi obnáší.
Oddělený kód může být klidně ve vendor/others, na tom mi nezáleží,
naopak by měl mít u sebe své css a js.
- akadlec
- Člen | 1326
Udělat si z toho „opravdový modul“ ve kterém budeš mít vše, od
modelů přes routy až po presentery. Modul pak připojovat jako extesnion
přes DI.
Statické soubory buď řešit tak že budeš mít na to nějakou další
knihovnu která se ti o to bude starat a nebo prostě vždy bude muset někdo
ty statické soubory připojit.
Pro inspiraci můžes skočit na blog jsifaldy Já jeho postup používám. A statické soubory řeším pomocí webloaderu kterému ty soubory předá extension sám.
- Jiří Nápravník
- Člen | 710
akadlec taky pro staticke soubory pouzivam Webloader. Ale jak řešíš obrázky? Sice je to výjimečné, ale občas je nějaký specifiký
- Jiří Nápravník
- Člen | 710
akadlec ano tim se to da resit, nicmene nechcio to vse prevadet ruco, do stylu pisu primo obrazky nezakodovane a zakodovava mi to az pak webloader (mam tam vlastni filter). a hlavne ne vzdy je vhodny zakodovani, napriklad velky obrazek apod. Ale jak jsem pochopil, tak to asi neresis nijak:)
- Tomáš Kolinger
- Člen | 136
Nejčistější řešení je symlink do public složky. Alternativou je alias pro danou složku na straně webserveru ale to je mnohem pracnější. Ekvivalent k symlinku je kopírovat všechny obrázky do public složky ale to už je lepší mít deploy script se symlinkem, protože se to bude jednodušeji aktualizovat a nebudou duplikovaná data.
Ještě by se to dalo servírovat přes PHP ale to je podle mě špatný řešení, jelikož statický soubory si má handlovat webserver, protože to zbytečně žere výkon a procesy PHP.
V případě webhostingů to bude složitější. Tam symlinky fungovat asi nebudou a dělat nějaký post-deploy script bude taky oříšek (bez přístupu na konzoli).
Pro porovnání: v Jave se to řeší pomocí servletu = java čte a odesílá obrázky, python (django) v dev prostředí to také řeší přes nějaký python script ale na produkci se to řeší pomocí aliasů na webserveru
Editoval Tomáš Kolinger (12. 5. 2014 19:46)
- akadlec
- Člen | 1326
@Jiří Nápravník: počkej počkej jak růčo? Dyť od toho tu jsou filtry. Já mám v csskách normálně cesty a obrázky, filtr bach z nich udělá base reprezentace. Jinak pro případ že se ve stylu objeví soubor co nejde převést tak to řeším symlinkem do static složky ovšem to je trochu komplikovanější protože se musí pak poladit cesta, protože všechny scripty se cachují.
@Tomáš Kolinger: nevidím důvod proč by měly statické fajly žrát nějaký výkon, od toho tu přece máme cache navíc se pak dají distribuovat na CDN body.
- Jiří Nápravník
- Člen | 710
akadlec však jo, to píšu, že to nechci psát růčo, tak mám filtr, který mi to převede na tu base64. Nicméně pokud mám ty assets v app složce jak styl, tak obrázek a filtr mi to převádí. Tak nevím, v jakém pořadí se filtry vykonávájí. Bude mít dobře tu cestu, aby to převedl správně?
- Jiří Nápravník
- Člen | 710
A nechceš se pochlubit úpravou? Já mám ten filtr hodně dummy, vezme a pokud soubor existuje a má méně než 20kb, tak ho převede:-) Btw moc jsem nepochopil, proč přímo ve webloader ten převod není, ba co víc, proč vlastně neakceptuje data-images (zatím je PR na něj)