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.

Předchozí kapitola
Konfigurace - SysConf_Jet_DataListing
Další kapitola
Překladač