Přejít k navigační liště

Zdroják » Zprávičky » Neblokující JavaScript

Neblokující JavaScript

Zprávičky JavaScript, Různé

Nálepky:

JavaScript je v prohlížečích implementován převážně jako jednovláknový interpret, což přináší některé nevýhody, z nichž nejviditelnější je nutnost čekat, pokud se někde provádí dlouhý výpočet. Starší prohlížeče navíc kdykoli narazily na <script>, tak zastavily provádění dalších operací, dokud se skript nestáhl a nevykonal. Moderní dokáží stahovat skripty paralelně a vykonat je ve správném pořadí. HTML5 přichází s atributem async, který říká prohlížeči, že má skript nahrát asynchronně, tj. podobným způsobem jako když je tag script vytvořen skriptem. Zajímavé informace k tomuto tématu jsou v článku What is a non-blocking script.

S pěkným nápadem přichází LABjs, neboli Loading and Blocking JavaScript. Tato knihovna, zjednodušeně řečeno, přidává „syntaktický cukr“ a balí nevzhledný zmatek statických elementů script a dynamicky vytvářených a nahrávaných elementů script do úhledné podoby. Namísto

<script src="framework.js"></script>
<script src="plugin.framework.js"></script>
<script src="myplugin.framework.js"></script>
<script src="init.js"></script>

tak můžeme s LABjs psát:

<script>
   $LAB
   .script("framework.js").wait()
   .script("plugin.framework.js")
   .script("myplugin.framework.js").wait()
   .script("init.js");
</script>

Výše uvedený zápis spustí neblokující nahrávání framework.js, který musí být vykonán jako první. Na něm závisí skripty plugin a myplugin, které mohou být staženy a vykonány v libovolném pořadí, nejsou na sobě závislé. A až jako poslední musí být spuštěn skript init. Vše je jasné a pochopitelné ze zápisu. LABjs nabízí i další možnosti, jako např. zavolat callback funkci poté, co jsou skripty načtené (ve funkci wait).

Komentáře

Odebírat
Upozornit na
guest
6 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
loki

Inu, proc to delat podle standardu(html5), kdyz to jde slozite pres uzasny framework. Vysledny kod je hnusny a nestandardni…

jos

HTML5 je už standard?

pozortucnak

jednovláknový?
A co potom tedy bude toto?

setTimeout( function(){/* ...NEJAKÁ ŠÍLENOST... */}, 0);
pozortucnak

nejaký divný, funkce setTimeout by přece NĚMĚLA zastavit provádení scriptu…

Stav SIMD v Rustu v roce 2025

Různé
Komentáře: 1
SIMD - neboli Single Instruction, Multiple Data - znamená, že procesor může jednou instrukcí zpracovat více datových prvků najednou. Typicky to znamená, že místo sčítání dvou čísel přičtete dvě sady čísel paralelně. To může přinést výrazné zrychlení například při zpracování obrazu, audia nebo numerických výpočtů. Pokud již SIMD znáte, tato tabulka je vše, co budete potřebovat. A pokud s SIMD teprve začínáte, tabulku pochopíte do konce tohoto článku

GPUI Component: moderní Rust GUI komponenty pro cross-platform desktop aplikace

Různé
Komentáře: 0
GPUI Component je open-source Rust knihovna rozšiřující framework GPUI o více než 60 moderních, nativních a multiplatformních UI komponent. Staví na deklarativním přístupu, stateless renderování a jednoduchém API inspirovaném Reactem či Yew. Díky optimalizovanému výkonu, podpoře témat a flexibilním layoutům umožňuje rychlý vývoj desktopových aplikací, jako je například trading nástroj Longbridge Pro. Knihovna je licencována pod Apache 2.0 a dostupná na GitHubu.