<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title>MarcDown - 极简，上下分栏的 md 编辑器 - Arinbe</title>
	<link href="https://www.arinbe.com/index.php/17/marcdown-极简上下分栏的-md-编辑器/" rel="alternate"/>
		<id>https://www.arinbe.com/index.php/feed/conversation/17/</id>
	<updated>2026-08-20T15:09:47Z</updated>
	<generator>esoBB</generator>
	<entry>
		<title>itopidea</title>
		<link href="https://www.arinbe.com/index.php/post/17/" rel="alternate"/>
		<id>https://www.arinbe.com/index.php/post/17/</id>
		<updated>2026-08-20T15:09:47Z</updated>
		<author>
			<name>itopidea</name>
		</author>
		<content type="html"><![CDATA[<p>MarcDown 是一款独特的上下分栏的 Markdown 编辑器，所谓上下分栏，就是源码在上面，渲染结果放在下面，不是简单的上下分栏，而是将源码与渲染结果进行混排。支持表格，图片，公式，流程图，HTML 的上源码下渲染，源码还可以一键折叠，从而使整个页面尽可能的“所见即所得”，同时也能很方便地查看/修改源码。</p><p>MarcDown 并不是纯粹的“所见即所得”，而是将样式与源码渲染在一起的“实时渲染”，例如“<del>”分割线，其背景是一整条编辑器宽度的线，但仔细看分割线的左端仍然还有“</del>”的源码。</p><p>MarcDown 的目标就是作为系统默认的 md 查看器，点击 md 文件，然后触发 MarcDown ，在替换掉默认的 txt 记事本的同时，有着跟 txt 记事本一样的简洁/快速，而且还有 txt 记事本没有的实时渲染能力，可以在同一个上下文中方便浏览图片，公式，流程图等渲染结果。</p><p>MarcDown 的所有功能都是手工实现的，理论上实现一个 md 编辑器挺简单，只需要以 CodeMirror 库之类的为核心包一层即可。但 MarcDown 这里相当于实现了一遍 CodeMirror ，MarcDown 的主打特性是上下分栏，对页面高度的控制有更精细的要求，用 CodeMirror 不太能满足需求，因此我手撕了从源码解析到排版渲染的整体流程，当然我在开发过程中大量使用了 AI ，AI 确实提高了我的能力上限。</p><p>我借鉴 React 的原理，将 MarcDown 的排版渲染分为 reconcile 调和过程和 commit 提交过程，调和过程只处理 js 逻辑，将新旧虚拟节点进行 diff ，在 commit 提交过程根据 diff 做真实 Dom 的最小改动，听起来性能不错，但实际上目前仍有不少逻辑还未做性能优化，普通的 <a href='https://readme.md' target='_blank' class='external' onclick='return Conversation.externalLink()'>readme.md</a> 文件可以轻松打开，md 文件超过一万行编辑就比较卡了。如果把可优化项做完的话，实时编辑一万行的 md 文件应该能达到流畅水准。</p><p><a href='https://github.com/xopenbeta/marc-down' target='_blank' class='external' onclick='return Conversation.externalLink()'>https://github.com/xopenbeta/marc-down</a></p>]]></content>
	</entry>
</feed>
