Haunted — это библиотека для создания веб-компонентов на базе современных возможностей JavaScript, особенно хуков, вдохновлённых React. Документирование компонентов в Haunted важно для поддерживаемости кода, масштабируемости и удобства совместной работы в командах. Правильное документирование позволяет быстро понимать назначение компонентов, их API и взаимодействие с другими частями приложения.
Haunted использует обычные возможности JavaScript, поэтому стандартный способ документирования — это JSDoc. Основные элементы:
/**
* Компонент кнопки с кастомными стилями и событием клика.
*
* @param {Object} props - Свойства компонента.
* @param {string} props.label - Текст кнопки.
* @param {Function} [props.onClick] - Колбэк при клике.
*/
function Button({ label, onClick }) {
return html`<button @click=${onClick}>${label}</button>`;
}
Ключевые моменты:
@param описывает входные свойства (props). Указание
типа повышает удобство использования в IDE.[props.onClick] — квадратные скобки обозначают
необязательный параметр.Haunted поддерживает хуки, аналогичные React, такие как
useState, useEffect, useReducer.
Для каждого пользовательского хука рекомендуется добавлять описание,
объясняющее его назначение и возвращаемое значение:
/**
* Хук для управления состоянием счётчика.
*
* @param {number} initialValue - Начальное значение счётчика.
* @returns {[number, Function]} Массив с текущим значением и функцией увеличения.
*/
function useCounter(initialValue = 0) {
const [count, setCount] = useState(initialValue);
const increment = () => setCount(c => c + 1);
return [count, increment];
}
Особенности:
Компоненты Haunted часто взаимодействуют с внешним миром через
пользовательские события (CustomEvent). В документации
стоит фиксировать:
/**
* Компонент формы, который испускает событие submit.
*
* @event submit
* @type {CustomEvent<{value: string}>}
*/
function MyForm() {
const handleSubmit = e => {
e.preventDefault();
const value = e.target.elements.input.value;
dispatchEvent(new CustomEvent('submit', { detail: { value } }));
};
return html`
<form @submit=${handleSubmit}>
<input name="input" />
<button type="submit">Отправить</button>
</form>
`;
}
Рекомендации:
detail.Haunted позволяет инкапсулировать стили внутри компонентов с помощью шаблонных литералов:
const style = html`
<style>
button {
background-color: blue;
color: white;
padding: 0.5em 1em;
}
</style>
`;
Документирование стилей важно для понимания взаимодействия с DOM:
Наличие примеров в документации повышает практическую ценность. Для Haunted рекомендуется показывать:
/**
* Пример использования компонента Button
*/
const button = document.createElement('my-button');
button.label = 'Нажми меня';
button.addEventListener('click', () => console.log('Клик!'));
document.body.appendChild(button);
С помощью инструментов типа TypeDoc или JSDoc можно автоматически создавать веб-документацию по компонентам Haunted. Рекомендуется:
@param, @returns,
@event и @typedef для сложных структур
данныхПример для сложного props-объекта:
/**
* @typedef {Object} CardProps
* @property {string} title - Заголовок карточки.
* @property {string} content - Основной текст.
* @property {boolean} [highlighted] - Выделение карточки.
*/
Использование @typedef повышает читаемость и позволяет
IDE автоматически подсказывать свойства объекта.
Правильное документирование Haunted-компонентов создаёт прочную основу для масштабируемого и поддерживаемого кода, позволяя быстро интегрировать новые модули и обеспечивать единообразие в проектах.