Hlavní navigace

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

  • 2. 8. 2024 22:16

    Ladis

    >> 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í.

    Osobní projekt nemusí, ale zákazník nebude mít radost.

    > Já ale píšu o schválených standardech.
    > Setkal. Akorát že Gecko nic neemuluje.

    A o těch standardech jsem vám řekl, že někdy nejdou do takových detailů, aby nemusel Firefox upravit svoje chování podle majoritního Chrome kvůli nějakému webu. Emulovala i Opera a Edge a Firefoxu nic jiného nezbývá s 1% podílem.

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

    https://www.google.com/search?q=react+native+is+web+engine+on+mobile+or+not
    * Is React Native just a WebView?
    "React Native WebView is a node package that introduces a WebView component that allows developers to display web content seamlessly within a React Native application. Earlier, the component was part of React Native, but now it's its package and is community-driven."

    Takže se skutečně pro mobily kompiluje a webview (pro doplňující funkce) už ani není v základním balíku.

    > Vážně byste si nejdřív měl nastudovat, co je WebAssembly.

    Jak sjem psal předtím, rád porovnám svoji znalost s vaší.

    > 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.

    Pro web přeloží do HTML+JS, pro mobily do nativní app (nepoužívá webové jádro - příslušná komponenta ani neni v základní instalaci, viz část odpovědi výše).

    > Já jsem o žádných starých frameworcích nepsal.

    React: 11 let, Angular: 7 let, Vue: 10 let, Svelte: 8 let.

    > Teď už vám zbývá jen vyřešit, jak spouštění aplikací na mobilu souvisí s webovými stránkami.

    Uvedl jsem pro srovnání z pohledu uživatele.

    > 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.

    + WebAssembly, které nahrazuje klasické pluginy.

    > (...) 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.

    WebAssembly není JS bajtkód. A ani bajtkód Flashe, Javy, C#, ... Byl navržen od nuly ("from scratch"). Pro zajímavost, WebAssembly není nový ani z pohledu bajtkódu (kromě ActiveX spouštěly pluginy svůj bajtkód), ani z pohledu sandboxingu (NaCl pluginy v ChromeOS).

    > Který ovšem nebude mít přístup k ničemu jinému, než k čemu má dnes přístup JavaScript.

    Tzn. má přístup ke všemu, co JS.

    > Naposledy byla přidána vrstva automatické správy paměti, v prohlížečích je to implementováno pár měsíců.

    I bez podpory prohlížeče už předtím existovala rozpracovaná komunitní implementace a implementace Javy to vtipně (ale pomalu) obcházela alokováním porměnných vně, v JS glue vrstvě.

    > 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.

    To je ta glue vrstva. Stejně jako nativní aplikace pro Android a iOS musí volat API OS skrze primární jazyk(y). Nebo třeba .NET/Java/Python na desktopu.

    > WebAssembly v prohlížečích nikdy nebude mít přístup k ničemu navíc oproti JavaScriptu.

    A proč by měl? Jde o náhradu JS, pokud chci programovat frontend v nečem jiném než JS (glue vsrtva je v mnoha řešeních generovaná automaticky).

    > který s okolním světem bude komunikovat jenom prostřednictvím webových API, nebude volat libovolný nativní kód.

    Pro zajímavost, v rámci rozšíření prohlířeče (extenzí) může JS/WebAssembly volat nativní kód (nativní aplikace) vně prohlížeče.

    > 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.

    Toho jsem se záměrně zbavili tím sandboxingem.