MiniGFM:3KB的轻量Markdown渲染库
前端开发中Markdown渲染很常见,但主流库都太大了——动不动几十KB,还带一堆依赖和小众功能。小程序、轻量工具这些对体积敏感的场景,用这种重型库太浪费。
MiniGFM正好填补了这个空白。纯JavaScript写的,裸体积就3KB(Brotli压缩后1.5KB),零依赖,却能兼容GitHub Flavored Markdown(GFM),默认还带XSS防护。既轻量又实用,很适合轻量场景。
¶快速开始
MiniGFM支持浏览器、现代前端工程、Node.js这些主流环境,接入很简单,不用什么配置,就两步:实例化+调用parse方法。同时也支持个性化配置。
¶浏览器用CDN
不用构建,直接CDN引入就能用,适合原型开发、静态页面:
1 | <script src="https://cdn.jsdelivr.net/npm/@oblivionocean/minigfm@latest/dist/index.min.js"></script> |
1 | import MiniGFM from '@oblivionocean/minigfm'; |
¶Node.js(CommonJS)
Node.js服务端渲染也能用:
1 | const MiniGFM = require('@oblivionocean/minigfm'); |
¶个性化配置
配置项不多,就两个:
1 | const md = new MiniGFM({ |
¶为什么能做到这么小
同类库动不动几十KB,MiniGFM能做到3KB还兼容GFM核心语法,不是因为偷工减料,而是用了减法设计和工程优化,把没用的都砍掉了。
¶1. 只做GFM核心语法
MiniGFM只实现了GFM的核心语法(标题、列表、链接、加粗、代码块、引用、分隔线这些),把所有小众、低频的扩展都砍掉了。市面上重型库体积大的原因,就是为了追求「全量兼容」,塞了很多实际开发中根本用不到的功能。MiniGFM从需求上就精简了,代码量自然就小了。
¶2. 零依赖,纯原生
MiniGFM的解析器是纯手写的,不依赖任何第三方库——不用通用解析器,也不用工具类库,自然就不会因为依赖链膨胀体积。而且纯原生实现运行时没额外开销,渲染效率也更好。
¶3. 只输出HTML,样式和高亮按需来
MiniGFM就干一件事:把Markdown转成HTML。不绑CSS,不带主题,也不内置代码高亮。样式你自己定,代码高亮通过配置对接highlight.js。这样既减小了核心库体积,又保证了扩展的灵活性。
¶4. 代码层也精简
实现上做了很多优化:去掉老旧浏览器的兼容代码,只关注现代环境;精简解析逻辑,每一行代码都为核心服务;用高效的正则和轻量AST,在保证准确性的同时进一步压缩体积。
¶适用场景
MiniGFM定位是轻量场景下的GFM核心渲染,不是追求「大而全」的全场景方案。3KB体积+零依赖,在这些场景下最有价值:
- 体积敏感的应用:小程序、快应用这些对体积有严格限制的
- 轻量前端项目:个人博客、工具站、嵌入式组件
- 服务端渲染(SSR):Node.js环境下快速解析Markdown
- 简易编辑器/预览:作为Markdown实时预览的渲染层
当然,如果你需要支持大量小众扩展语法,或者要一站式的「渲染+样式+高亮」解决方案,MiniGFM可能不太合适。但它对「核心需求」的精准聚焦,恰好解决了大多数场景的Markdown渲染问题。
¶总结
MiniGFM的魅力就是减法设计贯彻到底:3KB体积、零依赖、兼容GFM、自带XSS防护,还能多环境使用。现代前端越来越重视性能和体积,这种「小而精」的工具库正好解决了重型库的冗余问题。
对于追求轻量、高效的场景,MiniGFM是个不错的选择,值得试试。
项目地址