Come leggere le firme
Le sezioni di firma hanno tipicamente questo aspetto:
vnode = m(selector, attributes, children)
Argomento | Tipo | Obbligatorio | Descrizione |
---|---|---|---|
selector | String|Object | Sì | Un selettore CSS oppure un componente. |
attributes | Object | No | Attributi HTML o proprietà degli elementi. |
children | Array<Vnode>|String|Number|Boolean | No | Vnode figli. Possono essere scritti come argomenti splat. |
ritorna | Vnode | Un vnode. |
La riga di firma sopra la tabella indica la sintassi generale del metodo, mostrando il nome del metodo, l'ordine dei suoi argomenti e un nome suggerito per la variabile che conterrà il suo valore di ritorno.
La colonna Argomento nella tabella indica a quale parte della firma si riferisce la riga corrispondente. La riga ritorna
visualizza informazioni sul valore restituito dal metodo.
La colonna Tipo indica il tipo di dato previsto per l'argomento.
Una barra verticale (|
) indica che un argomento è valido se ha uno qualsiasi dei tipi elencati. Ad esempio, String|Object
indica che selector
può essere una stringa OPPURE un oggetto.
Le parentesi angolari (< >
) dopo Array
indicano il tipo previsto per gli elementi dell'array. Ad esempio, Array<String>
indica che l'argomento deve essere un array e che tutti gli elementi in quell'array devono essere stringhe. Le parentesi angolari dopo Object
indicano una mappa. Ad esempio, Object<String,Component>
indica che l'argomento deve essere un oggetto, le cui chiavi sono stringhe e i valori sono componenti.
A volte possono comparire tipi non nativi per indicare che è richiesta una firma di oggetto specifica. Ad esempio, Vnode
è un oggetto che ha la struttura di un nodo DOM virtuale.
La colonna Obbligatorio indica se un argomento è obbligatorio o facoltativo. Se un argomento è facoltativo, puoi impostarlo su null
o undefined
, oppure ometterlo del tutto, facendo sì che l'argomento successivo appaia al suo posto.
Argomenti opzionali
Gli argomenti della funzione racchiusi tra parentesi quadre [ ]
sono facoltativi. Nell'esempio seguente, url
è un argomento facoltativo:
m.request([url,] options)
Splat
Un argomento splat significa che, se l'argomento è un array, è possibile omettere le parentesi quadre e avere invece un numero variabile di argomenti nel metodo.
Nell'esempio in alto, questo significa che m("div", {id: "foo"}, ["a", "b", "c"])
può anche essere scritto come m("div", {id: "foo"}, "a", "b", "c")
.
Gli splat risultano utili in alcuni linguaggi che compilano in JS, come CoffeeScript, e consentono anche utili scorciatoie per alcuni casi d'uso comuni.
Signature di funzione
Le funzioni vengono indicate con una freccia (->
). La parte sinistra della freccia indica i tipi degli argomenti in ingresso e il lato destro indica il tipo del valore di ritorno.
Ad esempio, parseFloat
ha la firma String -> Number
, ovvero accetta una stringa come input e restituisce un numero come output.
Le funzioni con più argomenti sono indicate con parentesi: (String, Array) -> Number
Signature del componente
I componenti sono indicati tramite chiamate a m
, ma con l'argomento selettore iniziale impostato su una costante denominata nel testo pertinente:
vnode = m(m.route.Link, attributes, children)
Argomento | Tipo | Obbligatorio | Descrizione |
---|---|---|---|
attributes.href | Object | Sì | Il percorso di destinazione verso cui navigare. |
attributes.selector | String|Object|Function | No | Imposta il nome del tag da utilizzare. Se fornito, deve essere un selettore valido per m ; il valore predefinito è "a" . |
attributes.options | Object | No | Imposta le opzioni passate a m.route.set . |
attributes | Object | No | Altri attributi da applicare al vnode restituito. |
children | Array<Vnode>|String|Number|Boolean | No | Vnode figlio per questo link. |
ritorna | Vnode | Un vnode. |
Si presume che i children qui, se specificati, possano essere scritti come argomenti splat, a meno che non sia diversamente specificato nel testo.
Un elemento senza children e/o attributi significativi può scegliere di omettere completamente il parametro pertinente:
vnode = m(Component, attributes)
Argomento | Tipo | Obbligatorio | Descrizione |
---|---|---|---|
attributes.href | Object | Sì | Il percorso di destinazione. |
attributes | Object | No | Altri attributi da applicare al vnode restituito. |
ritorna | Vnode | Un vnode. |