Milkdown 折腾手记:为网站添加一个好用的 Markdown 编辑器


阿拉平平

读完需要

5

分钟

速读仅需 2 分钟


Markdown 作为一种轻量级的『标记语言』,可以通过语法实现排版,快速添加代码块、链接以及数学公式。Markdown 的语法虽然并不复杂,但是依旧是有学习成本的。
也许你会向我推荐 Typora,是的,Typora 的功能非常强大。但是,Typora 作为一个桌面应用,首先必须下载;其次,它并没有开源,无法实现某些自定义的需求。


1. 项目介绍


   

Milkdown[1] 是一个轻量但强大的 WYSIWYG(所见即所得)的 Markdown 编辑器。它包含两部分:
  • 一个小巧的核心,提供了插件加载器和一些内置插件。

  • 大量的插件,包括语法、命令和组件。

这种模式的好处在于,用户可以根据自己的喜好选择插件,不至于使编辑器变得过于臃肿。Milkdown 可以和 Web 结合使用,本文将记录我使用 Milkdown 的过程。


2. 准备工作


   

我本地已经安装了 node v12.16.1,使用 vite 先创建一个项目:
npm init @vitejs/app milkdown-demo --template vanilla-ts

项目创建后,根据界面上的提示执行以下命令:

# 进入项目目录
cd milkdown-demo
# 安装依赖包
npm install
# 运行项目
npm run dev

项目启动后,访问 http://localhost:3000 查看页面:

Milkdown 折腾手记:为网站添加一个好用的 Markdown 编辑器


3. 使用说明


   

接下来,我们为这个项目添加 Milkdown 编辑器,并安装一些插件来扩展它的功能。


3.1 添加编辑器


   

运行以下命令安装组件与插件:
npm install @milkdown/core @milkdown/preset-commonmark @milkdown/theme-nord

其中:

  • @milkdown/core:Milkdown 的核心。

  • @milkdown/preset-commonmark:官方插件,添加 commonmark 语法支持。

  • @milkdown/theme-nord:官方主题,提供样式。

main.ts 的内容替换为:

import { defaultValueCtx, Editor } from "@milkdown/core";
import { nord } from "@milkdown/theme-nord";
import { commonmark } from "@milkdown/preset-commonmark";

import "./style.css";

Editor.make()
  .config((ctx) => {
    ctx.set(defaultValueCtx, "# Milkdown");
  })
  .use(nord)
  .use(commonmark)  
  .create();

这段代码设置了编辑器的默认值,并使用刚刚安装的插件,显示效果如下:

Milkdown 折腾手记:为网站添加一个好用的 Markdown 编辑器

3.2 使用插件


   

我们在添加编辑器的时候,其实已经添加了官方的插件,但目前的编辑器功能仍比较简单。接下来,我们继续添加官方插件来扩展编辑器的功能。

我选取了以下几个插件:
  • @milkdown/preset-gfm:添加 gfm 语法支持,替换之前的 commonmark。

  • @milkdown/plugin-slash:添加斜线指令,输入 / 使用。

执行以下命令进行安装:

npm install @milkdown/preset-gfm @milkdown/plugin-slash material-icons@latest

需要说明的是,这里除了插件,我还安装了最新的 material-icons,否则使用斜线指令时会出现图标不显示的问题。

再次修改 main.ts 文件,代码如下:

import { defaultValueCtx, Editor } from "@milkdown/core";
import { nord } from "@milkdown/theme-nord";
import { gfm } from "@milkdown/preset-gfm";
import { slash } from "@milkdown/plugin-slash";

import "./style.css";
import 'material-icons/iconfont/material-icons.css';

Editor.make()
  .config((ctx) => {
    ctx.set(defaultValueCtx, "# Milkdown");
  })
  .use(nord) 
  .use(gfm)
  .use(slash) 
  .create();

重启项目,以添加一个任务表为例,Milkdown 的显示效果如下:

Milkdown 折腾手记:为网站添加一个好用的 Markdown 编辑器

4. 写在最后


   

在这篇文章中,我创建了一个 Web 项目,为其添加了 Milkdown 编辑器,并安装了一些插件来扩展其功能。本文基于 Milkdown 的中文文档[2],记录我折腾的过程。除了中文文档,官方也提供了在线体验[3],有兴趣的话可以先去试用下。

References

[1] Milkdownhttps://github.com/Saul-Mirone/milkdown
[2] 中文文档https://milkdown.dev/#/zh-hans/getting-started
[3] 在线体验https://milkdown.dev/#/zh-hans/online-demo

原文始发于微信公众号(阿拉平平):Milkdown 折腾手记:为网站添加一个好用的 Markdown 编辑器

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/287546.html

(0)
码上实战的头像码上实战

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!