Webspire

Administrační systém

nw7 v2.23.0 a nw7-module v2.9.1

Do nový verzí balíčku nw7 a nw7-module vznikla podpora pro lazy-loadované komponenty, umožňující načíst se ajaxem po načtení stránky, voltitelně i až se zobrazním ve viewportu nebo se spožděním.

Podstatou lazy-loadovaných komponent je odložit vykreslení složitých komponent - tj. se sestavením stránky je vůbec nevykreslovat (aby se zbytečně nezpomalovalo načtení stránky). Toho je docíleno tak, že onu složitou komponentu obalíme jinou, který zajistí vykreslení té vnitřní - složité - až po přijetí signálu (ajaxem - obstarává obslužný JS).

Lazy-loadované komponeny je možné vykreslit, jakmile:

  • se stránka načte (tzn. po odpálení JS onload události)
  • se definovaným zpožděním poté, co se stránka načte
  • jakmile komponenta vstoupí do viewportu uživatele (při scrollu nebo změne velikosti okna), volitelně i s definovaným spožeděním

 

Příklad implementace

Tovární metoda klasické, nelazy-loadované komponenty:

 /**
* @param IFactory $factory
*
* @return BigComplexControl
*/
protected function createComponentBigComplexControl(IFactory $factory)
{
return $factory->create($this->service->getAll());
}

Tovární metoda lazy-loadované komponenty:

  /**
* @param IFactory $factory
*
* @return LazyLoadComponent
*/
protected function createComponentBigComplexControl(IFactory $factory)
{
return $this->lazyLoadComponentFactory->create(function() use ($factory) {
return $factory->create($this->service->getAll());
});
// mozno take dal nakonfigurovat:
// ->setLoadInViewport() // nacitat az s presunem do viewportu
// ->setDelay(500); // nacitat az se spozdenim 500ms
}

 Čili stačí jen zabalit tovární metodu do anonymní funkce, předávané do create metody továrny ILazyLoadComponentFactory. Tato anonymní funkce je poté volána až v okamžiku odloženého vykreslení - tedy ani drahé volání $this->service->getAll(), ani vykreslení se neděje při vykreslení stránky, ale až samostatně při odloženém vykreslení AJAXem.

###message