Jak czytać sygnatury
Sekcje sygnatur zazwyczaj wyglądają tak:
vnode = m(selector, attributes, children)
Argument | Typ | Wymagany | Opis |
---|---|---|---|
selector | String|Object | Tak | Selektor CSS lub komponent. |
attributes | Object | Nie | Atrybuty HTML lub właściwości elementu. |
children | Array<Vnode>|String|Number|Boolean | Nie | Potomne węzły wirtualne (vnode'y). Mogą być przekazywane jako argumenty splat. |
Zwraca | Vnode | Węzeł wirtualny (Vnode). |
Linia sygnatury nad tabelą przedstawia ogólną składnię metody, wskazując jej nazwę, kolejność argumentów oraz sugerowaną nazwę zmiennej, w której można zapisać wartość zwracaną.
Kolumna Argument w tabeli wskazuje, którą część sygnatury opisuje dany wiersz. W wierszu Zwraca
znajdują się informacje o wartości zwracanej przez metodę.
Kolumna Typ wskazuje oczekiwany typ argumentu.
Symbol pionowej kreski (|
) oznacza, że argument może przyjmować jeden z wymienionych typów. Na przykład String|Object
oznacza, że selector
może być typu string LUB object.
Nawiasy kątowe (< >
) po Array
wskazują oczekiwany typ elementów tablicy. Na przykład Array<String>
wskazuje, że argument musi być tablicą, a wszystkie elementy w tej tablicy muszą być ciągami znaków. Nawiasy kątowe po Object
wskazują mapę. Na przykład Object<String,Component>
wskazuje, że argument musi być obiektem, którego klucze są ciągami znaków, a wartości są komponentami.
Czasami mogą pojawić się typy inne niż natywne, wskazujące na wymaganą, specyficzną strukturę obiektu. Na przykład Vnode
jest obiektem, który ma strukturę wirtualnego węzła DOM.
Kolumna Wymagany wskazuje, czy argument jest wymagany, czy opcjonalny. Jeśli argument jest opcjonalny, można ustawić go na null
lub undefined
lub pominąć go całkowicie, pod warunkiem że następne argumenty zostaną przekazane w odpowiedniej kolejności.
Argumenty opcjonalne
Argumenty funkcji otoczone nawiasami kwadratowymi [ ]
są opcjonalne. W poniższym przykładzie url
jest argumentem opcjonalnym:
m.request([url,] options)
Splaty
Argument splat oznacza, że jeśli oczekiwany jest argument typu tablicowego, można pominąć nawiasy kwadratowe i przekazać zmienną liczbę argumentów bezpośrednio do metody.
W związku z tym, przykład m("div", {id: "foo"}, ["a", "b", "c"])
można zapisać również jako m("div", {id: "foo"}, "a", "b", "c")
.
Splaty są przydatne w niektórych językach kompilowanych do JS, takich jak CoffeeScript, a także pozwalają na tworzenie zwięzłych zapisów w niektórych typowych przypadkach użycia.
Sygnatury funkcji
Funkcje są oznaczane strzałką (->
). Lewa strona strzałki wskazuje typy argumentów wejściowych, a prawa strona wskazuje typ wartości zwracanej.
Na przykład parseFloat
ma sygnaturę String -> Number
, co oznacza, że przyjmuje ciąg znaków jako argument i zwraca liczbę.
Funkcje z wieloma argumentami są oznaczane nawiasami: (String, Array) -> Number
Sygnatury komponentów
Komponenty są oznaczane za pomocą wywołań do m
, z pierwszym argumentem selektora ustawionym na stałą nazwaną w odpowiednim tekście:
vnode = m(m.route.Link, attributes, children)
Argument | Typ | Wymagany | Opis |
---|---|---|---|
attributes.href | Object | Tak | Docelowa ścieżka do nawigacji. |
attributes.selector | String|Object|Function | Nie | Ustawia nazwę tagu do użycia. Musi być prawidłowym selektorem dla m . Domyślnie "a" , jeśli nie podano. |
attributes.options | Object | Nie | Ustawia opcje przekazywane do m.route.set . |
attributes | Object | Nie | Dodatkowe atrybuty, które zostaną zastosowane do zwróconego vnode. |
children | Array<Vnode>|String|Number|Boolean | Nie | Potomne vnode'y dla tego linku. |
Zwraca | Vnode | Vnode. |
Zakłada się, że argument children
, jeśli został podany, może być przekazywany jako argument splat, chyba że w opisie zaznaczono inaczej.
Element bez odpowiednich elementów potomnych i/lub atrybutów może pominąć odpowiedni parametr całkowicie:
vnode = m(Component, attributes)
Argument | Typ | Wymagany | Opis |
---|---|---|---|
attributes.href | Object | Tak | Docelowy adres URL. |
attributes | Object | Nie | Inne atrybuty, które zostaną zastosowane do zwróconego węzła wirtualnego (vnode). |
Zwraca | Vnode | Vnode |