IPub\AssetsLoader – servírování statických souborů jednoduše

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

Opět další extension která mi na předchozích projektech ulehčovala práci tentokráte se statickými soubory a nyní k dispozici pod nette. Chcete-li jendoduše řešit vkládání statických souborů do své aplikace, není nic jednoduššího než implementovat assets loader.

Co to umí?

  1. Zastřešuje kompletně práci se statickými soubory. Stačí je do této extension pouze vložit, případně aktivovat vybrané filtry a pak už vám bude aplikace servírovat jeden CSS soubor a jeden JS soubor.
  2. Všichni chtějí rychlost a tak i tato extension umožňuje definovat vlastní routu pro tyto statické soubory, takže vaše appka na doméně http://www.vaseappka.cz dokáže dávat k dispozici statiky na adrese http://cdn.vaseappka.cz a to díky routám.
  3. Pokud taky nechcete řešit kopírování statických souborů do document rootu, tak nyní již nemusíte, všechny statiky si můžete s klidem nechat ve vendor složce composeru, či app složce a jednotlivých modulech. Této extension je úplně jedno kde jsou, o jejich správne naservírování se postará sama a to nejen jak pro samotné CSS a JS ale také obrázky, fonty, atd.
  4. Máte vlastní extensiony co mají statiky a řešíte jak je dostat do stránky. Stačí využít StaticFilesProvider a je to, docela hračka
  5. A další featurka, balíčky. Máte appku rozdělenou na několik prostředí a všechny máte třeba na bootstrapu? Nemusíte složitě definovat X souborů několikrát dokolečka, stačí si vytvořit definici balíčku a tu pak předat vybraným assetům.

Samozřejmostí jsou taky filtry které provedou minifikaci či kompilaci vašich souborů a nebo si můžete definovat vlastní filtry.

Takže, kdo užije, směle do toho instalace jednoduchá a využívání bych řekl taky ;) Tipy a různé podněty jsou samozřejmě vítány.

Martk
Člen | 661
+
0
-

Vypadá to skvěle (Hlavně ty balíčky a extensions), určitě vyzkouším. Jen by mě zajímalo, jestli loader používá Nette\Utils\Finder ? V manuálu se o tom nic nepíše.

Oli
Člen | 1215
+
0
-

Nic o tom rozšíření nevím, ale podle tohodle bych řekl, že jo. ;-)

akadlec
Člen | 1326
+
0
-

Jop používá. V doku sem to ještě nějak nezmínil.

Já jej mám primárně na to abych nemusel složitě nějak přetahovat statiky do webdiru a nebo řešit nějakou další knihovnu co to řeší přes konzoli apod a hlavně jsem to chtěl mít na oddělené doméně.

echo
Člen | 134
+
0
-

@akadlec Promiň to hnidopišství, v readme si oprav traity od php 5.4+

Jinak se chci zeptat, jestli jde v konfigu %fullPathToFile% definovat relativně. Pokud ano, tak relativně vůči čemu?

Díky za knihovnu.

akadlec
Člen | 1326
+
0
-

Nee, cestu je potřeba absolutně a to proto že v jednom assetu mohou být staticky z různých míst a přišlo mi jednodušší je tam házet absolutně než nějak relativně a pak dohledávat.

potapnik
Člen | 127
+
+1
-

Ještě jsem to nezkoušel, ale na první pohled to vypadá skoro indenticky jako Webloader. Když používám Webloader Honzy Marka, tak JS/CSS soubory hlásí 200 OK, rád bych ale 304 Not Modified, tohle AssetsLoader umí? A co srovnání výkonnosti? Ptám se, abych našel důvody používat AssetsLoader :-)

akadlec
Člen | 1326
+
0
-

Tak hlavičky jsem neměnil. To co tahle ext dělá jinak je napsáno výše.

Filip Procházka
Moderator | 4668
+
0
-

@potapnik WebLoader vygeneruje soubory a to co s nimi udělá webserver dále neřeší. To aby se ti správně cachovaly musíš nastavit tedy v .htaccess nebo v configu nginxu, podle toho co používáš. Takové řešení bude samozřejmě mnohem výkonnější, než posílat to přes PHP :)

akadlec
Člen | 1326
+
0
-

jop to souhlas, pokud ten soubor naserviruje přímo server bude to rychleší než startování phpka, appky atd. Ovšem má to právě ty negativa že obrázky, fonty, atd. musí být v docroot složce dostupné a nebo se nějak ošetřovat třeba htaccessem. Já jsem to chtěl mít jednodušší, říct tady máš csska a jska a poraď si s nima.

Climber007
Člen | 105
+
0
-

Hoj, jde nějak míchat s pořadím souborů a packages? Výchozí jsou nejdřív soubory a potom až balíky, což mi zrovna nevyhovuje. Díky

akadlec
Člen | 1326
+
0
-

Ahoj, aktuálně to nelze ovlivnit. Mám v plánu to vyladit jakmile dořeším šablonovací část, takže klidně nějaké tipy co by to mělo umět co teď neumí uvítám.

Climber007
Člen | 105
+
0
-

Zatím mi chybí jen to pořadí a potom možnost nastavení atributů (media, type) ideálně přes konfigurák.
Jinak všechno funguje jak má :)

Editoval Climber007 (8. 7. 2015 12:59)

akadlec
Člen | 1326
+
0
-

no ty atributy jsem řešil, a zatím jsem tam měl neřešitelný problém jak to zapsat v neonu, ale určitě se k tomu vrátím.

Climber007
Člen | 105
+
0
-

Mě napadlo, že by to mohlo být stejně zapsané jako „gzip“, který je taky pro každý jeden výstupní soubor.

Climber007
Člen | 105
+
0
-

Potom mě kdysi napadla ještě jedna věc, když jsem dělal s Webloaderem. Abys nemusel vytvářet dvě komponenty (CSS a JS), dalo by se využít render metod komponenty a pomocí té dvojtečkové notace buď vracet CSSka nebo JS.

{control frontend:css}
{control frontend:js}

Co jsem se díval, tak myslím, že @FilipProcházka má někde vlastní implementaci těch render metod, ale uý nevím u čeho.

akadlec
Člen | 1326
+
0
-

jj toto by neměl být problém.

basnik
Člen | 3
+
0
-

Zdravím :)
V první řadě díky moc za skvělé rozšíření.

Narazil jsem na lehký problém. Z nějakého důvodu to po mě chce definovat konstantu WWW_DIR.
Děje se tak v src/IPub/AssetsLoader/Diagnostics/Panel.php na řádku 81. Přijde mi, že celý ten řádek tam je jaksi navíc :)
Tady kdyžtak nabízím PR.