【Milkdown】编辑器集成使用指南

一款高颜值所见即所得的Markdown神器——【Milkdown】主要记录了在使用过程中出现的一些问题,以及常用功能实现的踩坑历程及最终解决方案
摘要由CSDN通过智能技术生成

前言

最近因业务需要集成一款所见即所得的Markdown编辑器,在谷歌搜寻一番后看到了Milkdown,当时一看到界面就被它的颜值吸引到了,在体验到他便捷的语法后当即决定使用这款编辑器。
但不料在使用过程中却并没有那么一帆风顺,文档看的是一头雾水,国内外搜相关的教程也寥寥无几,99%基本都只是简单介绍,而且还都是同一篇帖子粘来粘去😂
👉再见 Typora!这款 Markdown 神器绝了!👈


踩坑过程及使用示例

这里以 Vue 2 为例,Vue 3 及其他框架使用方法类似,参照 Vue 3.x 集成示例 配置即可

1. 简易初始化

进入集成示例你会看到这么一句话:创建一个组件十分简单。

<template>
    <div ref="editor"></div>
</template>

<script>
    import {
      defaultValueCtx, Editor, rootCtx } from '@milkdown/core';
    import {
      nord } from '@milkdown/theme-nord';
    import {
      commonmark } from '@milkdown/preset-commonmark';
    export default {
     
        name: 'Editor',
        mounted() {
     
            Editor.make()
                .config((ctx) => {
     
                    ctx.set(rootCtx, this.$refs.editor);
                    ctx.set(defaultValueCtx, "# Hello Milkdown💗");
                })
                .use(nord)
                .use(commonmark)
                .create();
        },
    };
</script>

<style></style>

在引入插件和一通熟练的CV后,你会发现界面上除了几个单薄的文字外毛都没有——是的,所有功能插件都需要你自己单独安装,当我想要尝试把顶部的工具栏搞进来时,这个时候 第一个坑 来了,你会发现文档的 插件目录 中并没有我们想要的menu,一番搜寻后在Github仓库中才找到了该插件。

npm i @milkdown/plugin-menu

2. 完全体配置示例

效果参考 官网示例

import {
    defaultValueCtx, Editor, editorViewOptionsCtx, rootCtx } from '@milkdown/core';
import {
    clipboard } from '@milkdown/plugin-clipboard';
import {
    cursor } from '@milkdown/plugin-cursor';
import {
    diagram } from '@milkdown/plugin-diagram';
import {
    emoji } from '@milkdown/plugin-emoji';
import {
    history } from '@milkdown/plugin-history';
import {
    indent } from '@milkdown/plugin-indent';
import {
    listener, listenerCtx } from '@milkdown/plugin-listener';
import {
    math } from '@milkdown/plugin-math';
import {
    menu } from '@milkdown/plugin-menu';
import {
    prism } from '@milkdown/plugin-prism';
import {
    slash } from '@milkdown/plugin-slash';
import {
    tooltip } from '@milkdown/plugin-tooltip';
import {
    upload } from '@milkdown/plugin-upload';
import {
    gfm } from '@milkdown/preset-gfm';
import {
    nord } from '@milkdown/theme-nord';

export const createEditor = (
    root: HTMLElement | null,
    defaultValue: string,
    readOnly: boolean | undefined,
) => {
   
    const editor = Editor.make()
        .config((ctx) => {
   
            ctx.set(rootCtx, root);
            ctx.set(defaultValueCtx, defaultValue);
            ctx.set(editorViewOptionsCtx, {
    editable: () => !readOnly });
        })
        .use(nord)
        .use(gfm)
        .use(listener)
        .use(clipboard)
        .use(history)
        .use(cursor
  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值