Skip to content
Mithril.js 2
Main Navigation ÚtmutatóAPI

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

API

Alapvető API

m(selector, attributes, children)

render(element, vnodes)

mount(root, component)

route(root, defaultRoute, routes)

request(options)

parseQueryString(string)

buildQueryString(object)

buildPathname(object)

parsePathname(string)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

Opcionális API

stream()

Útmutató

Ezen az oldalon

render(element, vnodes) ​

Leírás ​

Egy sablont jelenít meg a DOM-ban.

javascript
m.render(document.body, 'hello');
// <body>hello</body>

Szignatúra ​

m.render(element, vnodes, redraw)

ArgumentumTípusKötelezőLeírás
elementElementIgenEgy DOM elem, amely a fa gyökérelemeként szolgál.
vnodesArray<Vnode>|VnodeIgenA megjelenítendő vnode-ok.
redraw() -> anyNemEgy visszahívó függvény, amely minden alkalommal aktiválódik, amikor a részfában egy eseménykezelő meghívásra kerül.
visszatérési értékundefined

Hogyan kell olvasni a szignatúrákat

Hogyan működik ​

Az m.render(element, vnodes) metódus egy virtuális DOM fát vesz (általában az m() hyperscript függvényen keresztül generálva), létrehoz egy DOM fát, és az element elemre csatolja. Ha az element már rendelkezik egy DOM fával, amelyet egy korábbi m.render() hívás csatolt fel, akkor a vnodes összevetésre kerül az előző vnodes fával, és a meglévő DOM fa csak ott módosul, ahol szükséges a változások tükrözéséhez. A változatlan DOM csomópontok érintetlenül maradnak.

Ezt használja az m.mount és az m.redraw az autoredraw funkcionalitás megvalósításához, de elérhető a fejlettebb felhasználási esetekhez is, mint például a harmadik féltől származó keretrendszerekkel való integráció.

Az m.render szinkron módon fut.

Miért virtuális DOM ​

Pazarlónak tűnhet egy vnode fa generálása minden újrarajzoláskor, de mint kiderült, a JavaScript adatstruktúrák létrehozása és összehasonlítása meglepően gyors a DOM olvasásához és módosításához képest.

A DOM manipulálása nagyon erőforrásigényes lehet több okból is. A felváltva történő olvasás és írás károsan hat a teljesítményre azáltal, hogy több böngésző újrarajzolást okoz gyors egymásutánban, míg a virtuális DOM-fák összehasonlítása lehetővé teszi az írások kötegelését egyetlen újrarajzolásba. Ezenkívül a különböző DOM műveletek teljesítményjellemzői eltérőek a megvalósítások között, és nehéz lehet megtanulni és optimalizálni azokat minden böngészőhöz. Például egyes implementációkban a childNodes.length olvasásának komplexitása O(n); egyesekben a parentNode olvasása újrarajzolást okoz, stb.

Ezzel szemben a JavaScript adatstruktúrák kezelése sokkal kiszámíthatóbb és ésszerűbb teljesítményprofilt mutat, ráadásul egy vnode fa úgy van megvalósítva, hogy lehetővé tegye a modern JavaScript motorok számára az intenzív optimalizációk használatát, mint például a rejtett osztályok a még jobb teljesítmény érdekében.

Különbségek más API metódusoktól ​

Az m.render() metódust belsőleg használja az m.mount(), az m.route(), az m.redraw() és az m.request(). Nem hívják meg stream frissítések után.

Az m.mount()-tal és az m.route()-tal ellentétben az m.render()-en keresztül renderelt vnode fa nem frissül automatikusan a nézeti eseményekre, az m.redraw() hívásokra vagy az m.request() hívásokra válaszul. Ez egy alacsony szintű eszköz, amely alkalmas könyvtárszerzők számára, akik kézzel akarják irányítani a renderelést ahelyett, hogy a Mithril.js beépített automatikus újrarajzoló rendszerére támaszkodnának.

Egy másik különbség, hogy az m.render metódus egy vnode-ot (vagy vnode-ok tömbjét) várja a második paraméterként, míg az m.mount() és az m.route() komponenseket várnak.

Önálló használat ​

var render = require("mithril/render")

Az m.render modul a Knockout, React és Vue nézetkönyvtárakhoz hasonló. Megvalósít egy virtuális DOM diffing motort egy modern keresési tér csökkentő algoritmussal és DOM újrahasznosítással, ami a kategóriájában a legjobb teljesítményt jelenti, mind a kezdeti oldalbetöltés, mind az újrarajzolás tekintetében. Nincsenek függőségei a Mithril.js más részeire, kivéve a require("mithril/render/vnode") által elérhetővé tett normalizálást, és önálló könyvtárként is használható.

Annak ellenére, hogy viszonylag kicsi, a render modul teljesen működőképes és önellátó. Teljes körű támogatást nyújt a komponenseknek, az SVG-nek, az egyéni elemeknek, és minden érvényes attribútumnak és eseménynek - mindenféle furcsa kis- és nagybetű érzékeny szélsőséges eset vagy kivétel nélkül. Természetesen teljes körű támogatást nyújt a komponenseknek és a lifecycle metódusoknak is.

Ha az m.render-t önálló modulként használja, hasznos lehet az hyperscript függvény importálása is a renderelendő vnode-ok létrehozásához.

Pager
Előző oldalm(selector, attributes, children)
Következő oldalmount(root, component)

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://mithril.js.org/render.html

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors