Библиотека Marked поддерживает стандартный Markdown-синтаксис для создания таблиц. Таблицы состоят из заголовка, разделителя и строк с данными:
| Заголовок 1 | Заголовок 2 | Заголовок 3 |
|------------|------------|------------|
| Ячейка 1 | Ячейка 2 | Ячейка 3 |
| Ячейка 4 | Ячейка 5 | Ячейка 6 |
Вертикальные линии | разделяют колонки.
Разделитель --- или :---: между
заголовком и данными определяет выравнивание содержимого ячеек.
Выравнивание колонок:
:--- — по левому краю---: — по правому краю:---: — по центруMarked по умолчанию умеет обрабатывать таблицы, но иногда требуется точная настройка через объект options:
const marked = require('marked');
marked.setOptions({
gfm: true, // Включение GitHub Flavored Markdown
tables: true, // Поддержка таблиц
});
true) — включает расширенный
синтаксис Markdown, необходимый для таблиц.true) — явно активирует парсер
таблиц.const markdown = `
| Имя | Возраст | Город |
|-----------|--------:|:-----------:|
| Иван | 25 | Москва |
| Мария | 30 | Санкт-Петербург |
`;
const html = marked(markdown);
console.log(html);
Результат:
<table>
<thead>
<tr>
<th>Имя</th>
<th style="text-align:right">Возраст</th>
<th style="text-align:center">Город</th>
</tr>
</thead>
<tbody>
<tr>
<td>Иван</td>
<td style="text-align:right">25</td>
<td style="text-align:center">Москва</td>
</tr>
<tr>
<td>Мария</td>
<td style="text-align:right">30</td>
<td style="text-align:center">Санкт-Петербург</td>
</tr>
</tbody>
</table>
Marked позволяет создавать собственный renderer, чтобы изменять HTML-вывод таблиц:
const renderer = new marked.Renderer();
renderer.table = (header, body) => {
return `
<table class="custom-table">
<thead>${header}</thead>
<tbody>${body}</tbody>
</table>
`;
};
const htmlCustom = marked(markdown, { renderer });
console.log(htmlCustom);
header — HTML-содержимое заголовка таблицыbody — HTML-содержимое всех строкdata-*, стили
inlineMarked автоматически добавляет атрибуты
style="text-align:..." для каждой колонки, если
используется двоеточие в разделителе. Для более сложного оформления
лучше использовать CSS:
.custom-table th {
background-color: #f2f2f2;
padding: 8px;
}
.custom-table td {
padding: 6px;
}
Пример выравнивания через Markdown:
| Левый | Центр | Право |
|:------|:-----:|------:|
| A | B | C |
<td></td><br> или включить HTML внутри Markdown:| Имя | Примечание |
|-----|------------|
| Иван | Пример строки<br>с переносом |
---).| Продукт | Цена | Ссылка |
|---------|-----:|--------|
| Книга | 500 | [Купить](#) |
| Ручка | 50 |  |
Marked можно использовать для динамического рендеринга таблиц в приложениях:
const tableData = [
{ name: 'Иван', age: 25, city: 'Москва' },
{ name: 'Мария', age: 30, city: 'Санкт-Петербург' }
];
const markdownTable = [
'| Имя | Возраст | Город |',
'|-----|--------:|:-----:|',
...tableData.map(item => `| ${item.name} | ${item.age} | ${item.city} |`)
].join('\n');
const htmlTable = marked(markdownTable);
Marked предоставляет гибкие возможности рендеринга таблиц, включая настройку выравнивания, кастомный HTML-вывод через renderer и поддержку Markdown внутри ячеек. Это делает библиотеку идеальной для генерации структурированных данных в веб-приложениях и документации.