Balíčkovač CSS a JavaScript
Balíčkovače CSS a JavaScript slouží ke spojení JS a CSS souborů použitých na stránce do jednoho balíčku. Tedy samozřejmě jednoho pro JS, a po jednom pro každý druh media pro CSS. Balíčkovač si dokáže poradit nejen s lokálními soubory, ale i s těmi z cizích zdrojů. Balíčkovač neprovádí žádnou minifikaci a kompresi. To není jeho určení. Ostatně o kompresi pro snížení objemu dat se může velice elegantně postarat webserver. Cílem balíčkovače je snížit kvantitu potřebných zdrojů na minimum. CSS balíčkovač provádí transformaci relativních adres zdrojů na adresy absolutní.
S baličkovačem jsme se setkali již u MVC layoutu, který je na balíčkovač přímo napojen. Přes instanci layoutu jsou vkládány JS a CSS a layout následně použije balíčkovač - je-li použití balíčkovače povoleno. Tedy když používáte layout, používáte i balíčkovač, jen ne přímo, ale zprostředkovaně. Ovšem balíčkovač lze použít i samostatně a to si teď ukážeme.
Použití balíčkovače
Samostatné použití balíčkovače je ve své podstatně jednoduché. Funguje to takto:
use Jet\Factory_PackageCreator;
use Jet\SysConf_URI;
$CSS_main = [
'https://somewhere/something.css',
SysConf_URI::getCss() . 'my.css'
];
$CSS_print = [
'https://somewhere/something_print.css',
SysConf_URI::getCss() . 'my_print.css'
];
$JS = [
'https://somewhere/something.js',
SysConf_URI::getCss() . 'my.css'
];
$CSS_package_main = Factory_PackageCreator::CSS( '', $CSS_main );
$CSS_package_main->generate();
$CSS_package_print = Factory_PackageCreator::CSS( 'print', $CSS_print );
$CSS_package_print->generate();
$JS_package = Factory_PackageCreator::CSS( $JS );
$JS_package->generate();
A následně už stačí vložit balíčky do HTML:
<link rel="stylesheet" type="text/css" href="<?=$CSS_package_main->getPackageURI();?>"/>
<link rel="stylesheet" type="text/css" href="<?=$CSS_package_print->getPackageURI();?>" media="print"/>
<script src="<?=$JS_package->getPackageURI()?>"></script>
Pozor!Všimněte si prosím, že pro vytváření instancí balíčkovačů jsou opět použity továrny.
Metody balíčkovačů (společné pro všechny třídy)
Metoda | Význam |
---|---|
JS: public __construct( array $URIs ) CSS: public __construct( string $media, array $URIs ) |
Konstruktorům je nutné předat seznam souborů ze kterých chcete balíček vytvořit. CSS balíčkovač potřebuje znát navíc ještě typ média pro které je CSS určeno. |
public generate( ): void |
Provede vygenerování balíčku. Tedy pokud ještě soubor balíčku neexistuje, tak balíček sestaví a zapíše. Ověřování existence balíčku provádí automaticky. Pozor! Neprovádí žádné kontrolní součty obsahu zdrojových souborů a podobně. Tedy neověřuje zda se zdrojový soubor nezměnil. To by bylo velice náročné a kontraproduktivní. V praxi se to řeší mazáním souborů balíčků po nasazení změn. Ovšem pokud se změní název zdrojových souborů, nebo pokud je nějaký zdrojový soubor přidán / odebrán, tak tato změna je již rozpoznána a je vygenerován nový balíček do nového souboru (s odlišným názvem). |
public getPackageURI( ): string |
Vrátí adresu balíčku určenou pro použití v HTML. Adresu vrátí i když balíček není vygenerován. |
public getPackagePath( ): string |
Vrátí plnou cestu k souboru balíčku. Cestu vrátí i když balíček není vygenerován. |
Třídy balíčkovače
Jak jsme si již řekli, tak pro získání instancí balíčkovačů je doporučeno použít továrny.
Ale pro úplnost dodejme, že balíčkovače představují třídy Jet\PackageCreator_CSS_Default a Jet\PackageCreator_JavaScript_Default, které dědí od abstraktních tříd Jet\PackageCreator_CSS a Jet\PackageCreator_JavaScript a vše má společnou rodičovskou abstraktní třídy Jet\PackageCreator.
Samozřejmě máte možnost od těchto tříd dědit a udělat si vlastní implementace balíčkovačů, které pomocí továrny předáte systému a i když nebudete používat balíčkovače přímo, ale přes layout, tak budou použity vaše třídy a implementace.