Как читать сигнатуры
Разделы сигнатур обычно выглядят так:
vnode = m(selector, attributes, children)
Аргумент | Тип | Обязательный | Описание |
---|---|---|---|
selector | String|Object | Да | CSS селектор или компонент |
attributes | Object | Нет | HTML атрибуты или свойства элемента |
children | Array<Vnode>|String|Number|Boolean | Нет | Дочерние виртуальные DOM-узлы. Могут быть переданы как аргументы с переменным количеством элементов |
возвращает | Vnode | Виртуальный DOM-узел |
Строка сигнатуры над таблицей демонстрирует общий синтаксис метода, включая имя метода, порядок аргументов и предлагаемое имя переменной для возвращаемого значения.
Столбец Аргумент в таблице указывает, какая часть сигнатуры описывается в соответствующей строке таблицы. Строка возвращает
содержит информацию о возвращаемом значении метода.
Столбец Тип определяет ожидаемый тип данных для аргумента.
Символ вертикальной черты (|
) указывает, что аргумент может иметь любой из перечисленных типов. Например, String|Object
означает, что selector
может быть строкой ИЛИ объектом.
Угловые скобки (< >
) после Array
указывают на ожидаемый тип элементов массива. Например, Array<String>
означает, что аргумент должен быть массивом, и все элементы в этом массиве должны быть строками. Угловые скобки после Object
указывают на структуру данных "карта" (map). Например, Object<String,Component>
означает, что аргумент должен быть объектом, ключи которого являются строками, а значения - компонентами.
Иногда могут встречаться нестандартные типы, указывающие на требуемую структуру объекта. Например, Vnode
- это объект, имеющий структуру виртуального DOM-узла.
Столбец Обязательный указывает, является ли аргумент обязательным или необязательным. Если аргумент необязательный, можно установить для него значение null
или undefined
, либо опустить его, чтобы следующий аргумент занял его место.
Необязательные аргументы
Аргументы функции, заключенные в квадратные скобки [ ]
, являются необязательными. В примере ниже url
является необязательным аргументом:
m.request([url,] options)
Splats
Splat аргумент означает, что если аргумент является массивом, можно опустить квадратные скобки и передать переменное количество аргументов в метод.
В примере выше это означает, что m("div", {id: "foo"}, ["a", "b", "c"])
можно записать как m("div", {id: "foo"}, "a", "b", "c")
.
Splats полезны в некоторых языках, компилируемых в JS, таких как CoffeeScript, а также позволяют использовать удобные сокращения в некоторых распространенных случаях.
Сигнатуры функций
Функции обозначаются стрелкой (->
). Левая часть стрелки указывает типы входных аргументов, а правая часть указывает тип возвращаемого значения.
Например, parseFloat
имеет сигнатуру String -> Number
, что означает, что она принимает строку в качестве входных данных и возвращает число в качестве выходных данных.
Функции с несколькими аргументами обозначаются круглыми скобками: (String, Array) -> Number
Сигнатуры компонентов
Компоненты обозначаются вызовами m
, где начальный аргумент селектора установлен в константу, имя которой соответствует контексту:
vnode = m(m.route.Link, attributes, children)
Аргумент | Тип | Обязательный | Описание |
---|---|---|---|
attributes.href | Object | Да | Маршрут назначения. |
attributes.selector | String|Object|Function | Нет | Определяет используемый тег. Должен быть допустимым селектором для m , если указан, по умолчанию "a" . |
attributes.options | Object | Нет | Задает параметры для m.route.set . |
attributes | Object | Нет | Другие атрибуты, передаваемые виртуальному DOM-узлу. |
children | Array<Vnode>|String|Number|Boolean | Нет | Дочерние виртуальные DOM-узлы для этой ссылки. |
возвращает | Vnode | Виртуальный DOM-узел. |
Дочерние элементы можно передавать как аргументы с переменным количеством элементов, если иное не указано в тексте.
Элемент без дочерних элементов и/или атрибутов может опустить соответствующий параметр:
vnode = m(Component, attributes)
Аргумент | Тип | Обязательный | Описание |
---|---|---|---|
attributes.href | Object | Да | Целевой маршрут для перехода. |
attributes | Object | Нет | Другие атрибуты, применяемые к возвращаемому виртуальному DOM-узлу |
возвращает | Vnode | Виртуальный DOM-узел |