@basenative /减价
零依赖ES模块降价解析器和ssr安全的HTML渲染器。
功能
- 零依赖关系 —不需要外部包装
- 纯ES模块 -工作在Node.js 22+和现代浏览器
- SSR-safe —无DOM访问,生成纯HTML字符串
- 以安全为目的 XSS预防,URL清理,HTML实体转义
- AST-first -解析到AST和单独渲染,或使用方便
parse()对HTML
支持减价
- 航空运输税目(
#–######)及settext标题(===,---突显出) - 段落
- 大胆的
**text**,__text__) - 斜体(
*text*,_text_) - 粗体加斜体(
***text***,___text___) - 删除线(
~~text~~) - 内联代码(
`text`)和带有内嵌反勾的双反勾代码 - 链接(
[text](url))及标题连结([text](url "title")) - 图像(
) - autolink (
<https://example.com>,<[email protected]>) - 无序列表(
-,*,+)和有序列表(1.,2.,……) - 嵌套列表(缩进两个空格)
- 任务列表(
- [ ] todo,- [x] done) - GFM - 代码块——用
```或者~~~,带有可选的语言标记 - 您(
>)与延迟延拓 - 横规(
---,___,***) - 表- ggm样式,具有列对齐(
:---,:---:,---:) - 硬断行(两个尾随空格或尾随
\) - 用于标点符号的反斜杠转义
- yaml样式的页眉(
---…---)
使用
import { parse, parseAST, render, parseFrontmatter } from '@basenative/markdown';
// One-shot: markdown → HTML
const html = parse('# Hello\n\nThis is **bold**.');
// Two-step: markdown → AST → HTML (lets you transform the AST)
const ast = parseAST('# Hello');
const html2 = render(ast);
// Frontmatter
const { meta, content } = parseFrontmatter(`---
title: Post
---
# Body`);
渲染器也可以作为单独的子路径导入:
import { render } from '@basenative/markdown/renderer';
表
| Name | Role | Score |
| :--- | :------: | ----: |
| Alice | designer | 42 |
| Bob | engineer | 100 |
列对齐是从分隔行(:--- 离开了, :---: 中心, ---: 右),并发出为 style="text-align:..." 在每个细胞上。
安全
渲染器包括内置的XSS攻击保护:
- HTML实体在所有文本节点(包括表格单元格)中进行转义。
javascript:,data:,vbscript:url被阻断- 图像、文本和代码语言类被转义
- 所有属性都被安全引用
任务列表
- [x] Write the parser
- [x] Write the renderer
- [ ] Ship it
渲染为 <ul class="task-list"> 与 <input type="checkbox" disabled> (或 checked disabled在每一个里面 <li class="task-list-item">.
限制
- 没有参考样式的链接(
[text][id]+[id]: url) - 没有HTML直通-原始HTML被转义
- 不支持LaTeX/math
- 没有自定义语法扩展
许可证
apache - 2.0