Hlavní navigace

Názor ke zprávičce Servo Engine už umí renderovat HTML tabulky vícevláknově od Filip Jirsák - Ty stránky musí fungovat i na ostatních a...

  • 2. 8. 2024 21:51

    Filip Jirsák
    Stříbrný podporovatel

    Ty stránky musí fungovat i na ostatních a starších verzí prohlížečů, takže původní řešení stejně musí mít.
    Nemusí.

    Některé vychytávky se stejně ještě několikrát předělají, než budou ve verzi bez prefixu.
    Já ale píšu o schválených standardech.

    Proto jsou technologie, které pro web generuji HTML+JS a nativní kód pro mobily,
    Žádná taková technologie se masivně nepoužívá.

    o jsem vás musel dovzdělat
    :-D

    i takové, které i pro web generují "strojový" kód (WebAssembly bajtkód)
    Vážně byste si nejdřív měl nastudovat, co je WebAssembly.

    To jste se za 20 let nesetkal s odlišným chováním Chrome a Firefoxu a neukázalo se, že ve standardu to takto do detailu není definováno?
    Setkal. Akorát že Gecko nic neemuluje.

    Takže to pojede, když ten ukázkový kód uložím jako .html a pustím v Chrome/FF?
    Když ten kód přeložíte JSX kompilátorem, dostanete JavaScript používající JavaScriptové knihovny (třeba React). Ovšem JSX je pouze syntaktický cukr, jenom jiný zápis volání JavaScriptových funkcí. A React sice používá JSX, ale není to nutné (můžete psát ručně to volání funkcí, akorát je to méně pohodlné, než JSX). A naopak JSX můžete používat bez Reactu.

    Hned vedle ale píšete, že tyto staré frameworky
    Já jsem o žádných starých frameworcích nepsal.

    Je tam vyložene ikona během načítání WebAssembly, jako znáte při spouštění např. aplikací na mobilu ;-)
    Teď už vám zbývá jen vyřešit, jak spouštění aplikací na mobilu souvisí s webovými stránkami.

    chápají web browser stále jako trochu lepší prohlížeč formátovaných dokumentů s jednoduchým skriptováním.
    To jsem nepsal. Ale prohlížeč pořád je zobrazovač dokumentů založených na značkovacích jazycích, stylovaných pomocí CSS a modifikovaných JavaScriptovým kódem. K tomu pak podporují prohlížeče (často až na Safari) různá další API, která lze volat z JavaScriptu.

    Já vím, co je WebAssembly. Ale radši si poslechnu vaší verzi, když se nechytáte ani s bodem výše.
    Nevíte.

    Když se pro webové aplikace (frontend) píše kód v jiném jazyce, než JavaScript, musí se pak následně transpilovat do JavaScriptu. JavaScript ovšem není úplně ideální cílové platforma, ostatně javascriptové enginy v prohlížečích jej také aspoň částečně kompilují do bajtkódu. Proto vznikla myšlenka udělat něco jako univerzální javascriptový bajtkód přenositelný mezi prohlížeči. Takový assembler pro webové prohlížeče. Který ovšem nebude mít přístup k ničemu jinému, než k čemu má dnes přístup JavaScript.

    WebAssembly je tedy standard pro virtuální stroj (pro spouštění bajtkódu, podobně jako třeba JVM nebo VM pro bajtkód Pythonu), který postupně definuje jednotlivé vrstvy VM, od jednotlivých instrukcí nahoru. Takový virtuální stroj může běžet v prohlížeči nebo i samostatně. Naposledy byla přidána vrstva automatické správy paměti, v prohlížečích je to implementováno pár měsíců. WebAssembly v prohlížečích ještě nemá přístup k žádným webovým API (takže ani k DOMu), veškerá webová API lze zatím z WebAssembly používat pouze voláním JavaScriptu, který teprve může volat ta webová API.

    WebAssembly v prohlížečích nikdy nebude mít přístup k ničemu navíc oproti JavaScriptu. Pořád to bude bajtkód běžící v sandboxu prohlížeče, který s okolním světem bude komunikovat jenom prostřednictvím webových API, nebude volat libovolný nativní kód.

    Proto se to nedá přirovnávat k pluginům v prohlížečích, jako byly Java Applety nebo Flash, což byl nativní kód spouštěný vedle prohlížeče, který mohl dělat naprosto cokoli.