软件名称
MarcDown - 上下分栏的md编辑器
应用平台
是否收费
开源免费
软件截图
应用简介
MarcDown是一款独特的上下分栏的Markdown编辑器,所谓上下分栏,就是源码在上面,渲染结果放在下面,支持表格,图片,公式,流程图,HTML的上源码下渲染,源码还可以一键折叠,从而使整个页面尽可能的“所见即所得”,同时也能很方便地查看/修改源码。
MarcDown并不是纯粹的“所见即所得”,而是将样式与源码渲染在一起的“实时渲染”,例如“—”分割线,其背景是一整条编辑器宽度的线,但仔细看分割线的左端仍然还有“—”的源码。
MarcDown的目标就是作为系统默认的md查看器,点击md文件,然后触发MarcDown,在替换掉默认的txt记事本的同时,有着跟txt记事本一样的简洁/快速,而且还有txt记事本没有的实时渲染能力,可以在同一个上下文中方便浏览图片,公式,流程图等渲染结果。
MarcDown的所有功能都是手工实现的,理论上实现一个md编辑器挺简单,只需要以CodeMirror库之类的为核心包一层即可。但MarcDown这里相当于实现了一遍CodeMirror,MarcDown的主打特性是上下分栏,对页面高度的控制有更精细的要求,用CodeMirror不太能满足需求,因此我手撕了从源码解析到排版渲染的整体流程,当然我在开发过程中大量使用了AI,AI确实提高了我的能力上限。
我借鉴React的原理,将MarcDown的排版渲染分为reconcile调和过程和commit提交过程,调和过程只处理js逻辑,将新旧虚拟节点进行diff,在commit提交过程根据diff做真实Dom的最小改动,听起来性能不错,但实际上目前仍有不少逻辑还未做性能优化,普通的readme.md文件可以轻松打开,md文件超过一万行编辑就比较卡了。如果把可优化项做完的话,实时编辑一万行的md文件应该能达到流畅水准。
官网:MarcDown
github: Github
跪求star!
CWord
(CWord)
5
省流:Tauri+react,代码无注释,有针对代码文件的md解释,无i18n。
注:此评论不代表任何立场,仅省流
发布了一个新版本,修复了一些bug,优化了性能。
我发现了一个解析速度超快的md解析器satteri,rust写的,运行速度比js写的解析器快十倍:
测试文件大小 937.8 KB(960256 bytes,约3万行)
| 指标 |
mdast (老牌md解析器) |
satteri (用Rust写的md解析器) |
| 平均耗时 |
1003.37 ms |
9.43 ms |
| 节点数 |
54785 |
64001 |
MacrDown接入了satteri,现在编辑上万行的md文件也挺流畅的了
其实对于查看文档,尤其是在电脑这种宽屏显示器上,这种上下分栏并不合理。
- 上下分栏会使得每个页面的高度减小。遇到列表等 每行不长,但有很多行 的文本,需要频繁滚动,增加额外操作。
- 上下分栏也会导致文本显示区过长,看一段文本可能需要左右转头,而且过长的文本看起来也不方便,容易串行。
- 对于源代码和预览分开的编辑器,传统的左右分栏的一个优势是:如果想看某端代码的渲染效果,只需看另一栏中相同高度的地方即可。而如果是上下分栏,找起来就没那么方便。
我感觉还好吧,一般理想的用法是这样的:
例如这里的块级公式,所见即所得类md编辑器点击公式直接变成源码,看不到渲染结果了;左右分栏则其他地方的源码和渲染结果重复展示,浪费了空间。
所以我想解决的问题其实是:希望有些内容按照所见即所得的方式展示,例如标题行,普通文本行;有些内容按照分栏展示,例如块级公式,表格,流程图。所以采用了上下分栏的方式,这是我的一个解法。
也不是单纯的上下分栏,而是将渲染结果混排进了源码里,源码也可以一键折叠,对于太长的表格,建议直接折叠源码看表格渲染结果,如果需要编辑,那就只能展开源码当一个纯源码编辑器用了。
1 个赞
原来如此。不过这种不应该叫 “上下分栏”,因为严格意义上,您的软件中并没有出现分栏。
为避免歧义,可以考虑叫 “就地预览”。
另外,您的编辑器中,表格的源代码和渲染后的表格都会显示。遇到长表格时,其实也是非常浪费空间的: