























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