Hogyan olvassuk a szignatúrákat
A szignatúra részek általában így néznek ki:
vnode = m(selector, attributes, children)
Argumentum | Típus | Kötelező | Leírás |
---|---|---|---|
selector | String|Object | Igen | CSS-szelektor vagy komponens. |
attributes | Object | Nem | HTML attribútumok vagy elem tulajdonságok. |
children | Array<Vnode>|String|Number|Boolean | Nem | Gyermek vnode-ok. Splat argumentumként is megadható. |
visszatérési érték | Vnode | Egy vnode. |
A táblázat feletti szignatúra sor a metódus általános szintaxisát mutatja be, beleértve a metódus nevét, az argumentumok sorrendjét és egy javasolt változónevet a visszatérési értékhez.
A táblázat Argumentum oszlopa azt jelzi, hogy az adott sor a szignatúra melyik argumentumát magyarázza. A visszatérési érték
sor a metódus visszatérési értékéről nyújt információt.
A Típus oszlop az argumentum elvárt típusát jelzi.
A függőleges vonal (|
) azt jelzi, hogy egy argumentum akkor érvényes, ha a felsorolt típusok közül bármelyikkel rendelkezik. Például a String|Object
azt jelzi, hogy a selector
lehet string vagy objektum.
A szögletes zárójelek (< >
) az Array
után a tömb elemeinek elvárt típusát jelölik. Például az Array<String>
azt jelzi, hogy az argumentumnak tömbnek kell lennie, melynek minden eleme string. Az Object
utáni szögletes zárójelek egy map-et (kulcs-érték párokat tartalmazó objektumot) jelentenek. Például az Object<String,Component>
azt jelzi, hogy az argumentumnak objektumnak kell lennie, amelynek kulcsai stringek, értékei pedig komponensek.
Néha nem natív típusok is megjelenhetnek, amelyek azt jelzik, hogy egy adott objektum szignatúrája szükséges. Például a Vnode
egy olyan objektum, amely virtuális DOM csomópont struktúrával rendelkezik.
A Kötelező oszlop azt mutatja, hogy egy argumentum kötelező vagy opcionális. Ha egy argumentum opcionális, beállíthatja null
vagy undefined
értékre, vagy teljesen elhagyhatja, ebben az esetben a következő argumentum kerül a helyére.
Opcionális argumentumok
A [ ]
szögletes zárójelekkel körülvett függvényargumentumok opcionálisak. Az alábbi példában az url
egy opcionális argumentum:
m.request([url,] options)
Splat argumentumok
A splat argumentum azt jelenti, hogy ha az argumentum tömb, akkor elhagyhatók a szögletes zárójelek, és a metódus változó számú argumentumot fogadhat el.
A fenti példában ez azt jelenti, hogy az m("div", {id: "foo"}, ["a", "b", "c"])
ugyanaz, mint az m("div", {id: "foo"}, "a", "b", "c")
.
A splat argumentumok hasznosak néhány JavaScriptre fordított nyelvben, például a CoffeeScriptben, és néhány gyakori használati esetre tesznek lehetővé rövidítéseket.
Függvény szignatúrák
A függvényeket a nyíl (->
) jelöli. A nyíl bal oldala a bemeneti argumentumok típusait, a jobb oldala pedig a visszatérési érték típusát mutatja.
Például a parseFloat
szignatúrája String -> Number
, azaz egy stringet fogad bemenetként, és egy számot ad vissza kimenetként.
Több argumentummal rendelkező függvényeket zárójelek jelölik: (String, Array) -> Number
Komponens szignatúrák
A komponenseket az m
hívások jelölik, de a kezdeti szelector argumentum a releváns szövegben megnevezett konstansra van állítva:
vnode = m(m.route.Link, attributes, children)
Argumentum | Típus | Kötelező | Leírás |
---|---|---|---|
attributes.href | Object | Igen | A célútvonal, ahová navigálni kell. |
attributes.selector | String|Object|Function | Nem | Ez beállítja a használandó elem nevét. Ha meg van adva, érvényes szelektornak kell lennie az m számára, alapértelmezés szerint "a" . |
attributes.options | Object | Nem | Ez a m.route.set számára átadandó opciókat állítja be. |
attributes | Object | Nem | A visszaadott vnode-ra alkalmazható egyéb attribútumok is átadhatók. |
children | Array<Vnode>|String|Number|Boolean | Nem | Alárendelt vnode-ok ehhez a linkhez. |
visszatérési érték | Vnode | Egy vnode. |
Az itt található gyermekelemek, ha meg vannak adva, feltételezhetően splat argumentumként adhatók meg, hacsak a szöveg mást nem mond.
Egy elem, amelynek nincs értelmes alárendeltje és/vagy attribútuma, dönthet úgy, hogy teljesen elhagyja a releváns paramétereit:
vnode = m(Component, attributes)
Argumentum | Típus | Kötelező | Leírás |
---|---|---|---|
attributes.href | Object | Igen | A célútvonal. |
attributes | Object | Nem | A visszaadott vnode-ra alkalmazható egyéb attribútumok. |
visszatérési érték | Vnode | Egy vnode. |