Cómo leer las firmas
Las secciones de firmas normalmente se ven así:
vnode = m(selector, attributes, children)
Argumento | Tipo | Requerido | Descripción |
---|---|---|---|
selector | String|Object | Sí | Un selector CSS o un componente. |
attributes | Object | No | Atributos HTML o propiedades del elemento. |
children | Array<Vnode>|String|Number|Boolean | No | Vnodes hijos. Se pueden escribir como argumentos splat. |
retorna | Vnode | Un vnode. |
La línea de firma encima de la tabla indica la sintaxis general del método, mostrando el nombre del método, el orden de sus argumentos y un nombre de variable sugerido para el valor de retorno.
La columna Argumento en la tabla indica qué parte de la firma se explica en la fila respectiva. La fila returns
muestra información sobre el valor de retorno del método.
La columna Tipo indica el tipo esperado para el argumento.
Una barra vertical (|
) indica que un argumento es válido si tiene alguno de los tipos enumerados. Por ejemplo, String|Object
indica que selector
puede ser una cadena o un objeto.
Los corchetes angulares (< >
) después de un Array
indican el tipo esperado para los elementos de la matriz. Por ejemplo, Array<String>
indica que el argumento debe ser una matriz y que todos los elementos de esa matriz deben ser cadenas. Los corchetes angulares después de un Object
indican un mapa. Por ejemplo, Object<String,Component>
indica que el argumento debe ser un objeto, cuyas claves son cadenas y los valores son componentes.
A veces, pueden aparecer tipos no nativos para indicar que se requiere una firma de objeto específica. Por ejemplo, Vnode
es un objeto que tiene la estructura de un nodo DOM virtual.
La columna Requerido indica si un argumento es requerido u opcional. Si un argumento es opcional, puede establecerlo en null
o undefined
, u omitirlo por completo, de modo que el siguiente argumento aparezca en su lugar.
Argumentos opcionales
Los argumentos de función rodeados de corchetes [ ]
son opcionales. En el siguiente ejemplo, url
es un argumento opcional:
m.request([url,] options)
Splats
Un argumento splat significa que si el argumento es una matriz, puede omitir los corchetes y tener un número variable de argumentos en el método en su lugar.
En el ejemplo en la parte superior, esto significa que m("div", {id: "foo"}, ["a", "b", "c"])
también se puede escribir como m("div", {id: "foo"}, "a", "b", "c")
.
Los splats son útiles en algunos lenguajes que compilan a JS como CoffeeScript, y también permiten abreviaturas útiles para algunos casos de uso comunes.
Firmas de función
Las funciones se denotan con una flecha (->
). El lado izquierdo de la flecha indica los tipos de los argumentos de entrada y el lado derecho indica el tipo del valor de retorno.
Por ejemplo, parseFloat
tiene la firma String -> Number
, es decir, toma una cadena como entrada y devuelve un número como salida.
Las funciones con múltiples argumentos se denotan con paréntesis: (String, Array) -> Number
Firmas de componente
Los componentes se denotan a través de llamadas a m
, pero con el argumento selector inicial establecido en una constante nombrada en el texto:
vnode = m(m.route.Link, attributes, children)
Argumento | Tipo | Requerido | Descripción |
---|---|---|---|
attributes.href | Object | Sí | La ruta de destino a la que navegar. |
attributes.selector | String|Object|Function | No | Esto establece el nombre de la etiqueta a usar. Debe ser un selector válido para m si se proporciona; el valor predeterminado es "a" . |
attributes.options | Object | No | Esto establece las opciones pasadas a m.route.set . |
attributes | Object | No | Pueden pasarse otros atributos para aplicar al vnode devuelto. |
children | Array<Vnode>|String|Number|Boolean | No | Vnodes hijos para este enlace. |
retorna | Vnode | Un vnode. |
Los hijos, si se especifican, pueden escribirse como argumentos splat, a menos que se especifique lo contrario en el texto.
Un elemento sin hijos o atributos relevantes puede optar por omitir el parámetro relevante por completo:
vnode = m(Component, attributes)
Argumento | Tipo | Requerido | Descripción |
---|---|---|---|
attributes.href | Object | Sí | La ruta de destino. |
attributes | Object | No | Pueden pasarse otros atributos para aplicar al vnode devuelto. |
retorna | Vnode | Un vnode. |