惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
H
Heimdal Security Blog
K
Kaspersky official blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Schneier on Security
G
GRAHAM CLULEY
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
CERT Recently Published Vulnerability Notes
Google DeepMind News
Google DeepMind News
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
C
Cisco Blogs
Cyberwarzone
Cyberwarzone
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 司徒正美
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
Jina AI
Jina AI
P
Proofpoint News Feed
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 聂微东
T
The Blog of Author Tim Ferriss
Spread Privacy
Spread Privacy
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
S
Security Affairs
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
N
News | PayPal Newsroom
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
NISL@THU
NISL@THU

Fgaoxing

Go反射:性能瓶颈与零拷贝优化 至全体朋友 Goh:一款Go语言的预编译快速模板引擎。(Benchmark排名第一) 【预告】关于函数传参时栈的变化 【谈谈当下】青少年口中的垃圾话语 【LSP】微型滚动动画库 推一下 Vercel 加速节点 网站优化小窍门 【显微镜下的世界】0x1 【Hexo】优化教程 【CDNN】CDNN再添一员 懒加载的妙用:缓存篇 【FastJump.js】简单的快速跳转技术 BiliBili崩了 【New Bing】New Bing免代理申请和使用 simplest-server Python实现文件查重 放开想,越离谱越好 2022 夏季应用推荐
MiniGFM:3KB的轻量Markdown渲染库
Fgaoxing · 2026-01-30 · via Fgaoxing

前端开发中Markdown渲染很常见,但主流库都太大了——动不动几十KB,还带一堆依赖和小众功能。小程序、轻量工具这些对体积敏感的场景,用这种重型库太浪费。

MiniGFM正好填补了这个空白。纯JavaScript写的,裸体积就3KB(Brotli压缩后1.5KB),零依赖,却能兼容GitHub Flavored Markdown(GFM),默认还带XSS防护。既轻量又实用,很适合轻量场景。

¶快速开始

MiniGFM支持浏览器、现代前端工程、Node.js这些主流环境,接入很简单,不用什么配置,就两步:实例化+调用parse方法。同时也支持个性化配置。

¶浏览器用CDN

不用构建,直接CDN引入就能用,适合原型开发、静态页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script src="https://cdn.jsdelivr.net/npm/@oblivionocean/minigfm@latest/dist/index.min.js"></script>
<script>

const mdRenderer = new MiniGFM();

const htmlStr = mdRenderer.parse('# MiniGFM\n\n一款**3KB**轻量GFM兼容Markdown渲染库,零依赖且XSS安全。');

document.getElementById('md-container').innerHTML = htmlStr;
</script>
`

### 现代前端项目(ESModule)

Vue、React、Vite这些工程化项目,NPM安装后按需导入就行:

```bash
npm i @oblivionocean/minigfm
1
2
3
4
import MiniGFM from '@oblivionocean/minigfm';
const md = new MiniGFM();
const result = md.parse('> 设计理念:轻量至上,聚焦核心\n```js\nconsole.log("MiniGFM");\n```');
console.log(result);

¶Node.js(CommonJS)

Node.js服务端渲染也能用:

1
2
3
const MiniGFM = require('@oblivionocean/minigfm');
const md = new MiniGFM.MiniGFM();
const html = md.parse('### 服务端渲染\nMiniGFM支持Node.js环境');

¶个性化配置

配置项不多,就两个:

1
2
3
4
const md = new MiniGFM({
unsafe: true,
hljs: hljs
});

¶为什么能做到这么小

同类库动不动几十KB,MiniGFM能做到3KB还兼容GFM核心语法,不是因为偷工减料,而是用了减法设计工程优化,把没用的都砍掉了。

¶1. 只做GFM核心语法

MiniGFM只实现了GFM的核心语法(标题、列表、链接、加粗、代码块、引用、分隔线这些),把所有小众、低频的扩展都砍掉了。市面上重型库体积大的原因,就是为了追求「全量兼容」,塞了很多实际开发中根本用不到的功能。MiniGFM从需求上就精简了,代码量自然就小了。

¶2. 零依赖,纯原生

MiniGFM的解析器是纯手写的,不依赖任何第三方库——不用通用解析器,也不用工具类库,自然就不会因为依赖链膨胀体积。而且纯原生实现运行时没额外开销,渲染效率也更好。

¶3. 只输出HTML,样式和高亮按需来

MiniGFM就干一件事:把Markdown转成HTML。不绑CSS,不带主题,也不内置代码高亮。样式你自己定,代码高亮通过配置对接highlight.js。这样既减小了核心库体积,又保证了扩展的灵活性。

¶4. 代码层也精简

实现上做了很多优化:去掉老旧浏览器的兼容代码,只关注现代环境;精简解析逻辑,每一行代码都为核心服务;用高效的正则和轻量AST,在保证准确性的同时进一步压缩体积。

¶适用场景

MiniGFM定位是轻量场景下的GFM核心渲染,不是追求「大而全」的全场景方案。3KB体积+零依赖,在这些场景下最有价值:

  1. 体积敏感的应用:小程序、快应用这些对体积有严格限制的
  2. 轻量前端项目:个人博客、工具站、嵌入式组件
  3. 服务端渲染(SSR):Node.js环境下快速解析Markdown
  4. 简易编辑器/预览:作为Markdown实时预览的渲染层

当然,如果你需要支持大量小众扩展语法,或者要一站式的「渲染+样式+高亮」解决方案,MiniGFM可能不太合适。但它对「核心需求」的精准聚焦,恰好解决了大多数场景的Markdown渲染问题。

¶总结

MiniGFM的魅力就是减法设计贯彻到底:3KB体积、零依赖、兼容GFM、自带XSS防护,还能多环境使用。现代前端越来越重视性能和体积,这种「小而精」的工具库正好解决了重型库的冗余问题。

对于追求轻量、高效的场景,MiniGFM是个不错的选择,值得试试。

项目地址