简介

ByteMD 是一个轻量级、功能丰富的 Markdown 编辑器组件,由稀土掘金(juejin.cn)团队开发并开源。它采用 Svelte 构建,支持双向编辑(所见即所得),并提供了丰富的插件系统。

核心特点

轻量级

  • 不依赖任何前端框架(如 React、Vue),可直接集成到任何项目中。
  • 压缩后体积约 30KB(含核心功能)。

双向编辑模式

  • 支持分屏预览、实时预览和切换为纯编辑器 / 预览模式。

 插件系统

  • 内置常用插件(如代码高亮、表格、数学公式等)。
  • 支持自定义插件扩展功能。

 安全处理

  • 内置 XSS 过滤,防止恶意代码注入。
  • 支持自定义 HTML 渲染规则。

 响应式设计

  • 适配移动端和桌面端,布局自动调整。

基本用法

安装依赖

安装环境依赖

pnpm install bytemd

安装vue3版本组件

pnpm install @bytemd/vue-next

安装主题

pnpm install juejin-markdown-themes //安装掘金主题 不安装无法正常显示markdown文本

安装插件

//可选安装插件
pnpm install @bytemd/plugin-medium-zoom  //图片缩放
pnpm install @bytemd/plugin-gfm          //让mrakdown 可以展示表格
pnpm install @bytemd/plugin-gemoji       //支持Gemoji短代码
pnpm install @bytemd/plugin-highlight    //支持代码块高亮pnpm install @bytemd/plugin-math          //支持数学公式
pnpm install @bytemd/plugin-breaks
pnpm install @bytemd/plugin-frontmatter   //解析前置元数据
pnpm install @bytemd/plugin-highlight-ssr //支持代码块高亮ssr版本
pnpm install @bytemd/plugin-math-ssr      //支持数学公式ssr版本
pnpm install @bytemd/plugin-mermaid       //支持 Mermaid 图表

自定义组件

创建一个 ByteMD.vue组件,封装 ByteMD 的功能:

<script setup lang="ts">
import {Editor} from '@bytemd/vue-next'
//第三方主题:https://github.com/xitu/juejin-markdown-themes
import 'juejin-markdown-themes/dist/juejin.min.css'
import 'bytemd/dist/index.css'import gfm from '@bytemd/plugin-gfm'
import highlight from '@bytemd/plugin-highlight'
import zhHans from 'bytemd/locales/zh_Hans.json'
import gemoji from '@bytemd/plugin-gemoji'
import mediumZoom from '@bytemd/plugin-medium-zoom'
import math from '@bytemd/plugin-math'
import breaks from '@bytemd/plugin-breaks'
import frontmatter from '@bytemd/plugin-frontmatter'
import highlightSsr from '@bytemd/plugin-highlight-ssr'
import mathSsr from '@bytemd/plugin-math-ssr'
import mermaid from '@bytemd/plugin-mermaid'import {defineProps, withDefaults} from 'vue'// 定义Props接口
interface Props {height?: number | string;handleChange: (value: string) => void;mode?: string;
}// 定义默认值
const props = withDefaults(defineProps<Props>(), {height: 400,mode: () => 'split', //编辑器显示模式,默认值:autohandleChange: (v: string) => {console.log(v)}
})// 添加插件
const plugins = [gfm(),highlight(),gemoji(),mediumZoom(),math(),breaks(),frontmatter(),highlightSsr(),mathSsr(),mermaid(),
]const emit = defineEmits<{mounted: [];
}>();const content = defineModel<string>('modelValue', {default: '',
});//上传图片
import {ossUpload} from "#/api/system/oss";const handleUploadImages = async (files: any) => {let imgs: any = []for (let index = 0; index < files.length; index++) {const file = files[index]let res = await ossUpload(file)  //上传到OSSconsole.log(res)imgs.push({title: res.fileName,url: res.url})}return imgs
}</script><template><div class="app-bytemd"><Editor:value="content":plugins="plugins"@change="handleChange":locale="zhHans":upload-images="handleUploadImages"/></div>
</template><style lang="scss">
.app-bytemd {//覆盖 ByteMD Editor 的默认高度。.bytemd {height: 800px !important;}
}</style>

引用组件

<script setup lang="ts">import {ByteMD} from '#/components/bytemd';import { ref } from 'vue'//给组件传入值 就是文章的内容
const content= ref<string>()const handleChange= (value: string) => {content.value = value
}</script><template><view><ByteMD:value="content":handle-change="handleChange"/></view>
</template>

演示效果

参考

https://github.com/pd4d10/bytemd

https://github.com/xitu/juejin-markdown-themes

Markdown themes gallery

ByteMD Playground

https://github.com/CooperJiang/bytemd-plugins

https://blog.csdn.net/readmancynn/article/details/144269236

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/86954.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/86954.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/86954.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“AI大语言模型”助力大气科学:ERA5再分析数据、WRF处理、遥感降水、CMIP6未来气候、天气晴雨预测的完整方法论等

内容覆盖使用GPT处理数据、生成论文摘要、文献综述、技术方法分析等实战案例&#xff0c;将AI技术广泛应用于科研工作。特别关注将GPT与Python结合应用于遥感降水数据处理、ERA5大气再分析数据的统计分析、干旱监测及风能和太阳能资源评估等大气科学关键场景。旨在提升参与者在…

STM32给FPGA的外挂FLASH进行升级

STM32给FPGA的外挂FLASH进行升级 一、电路方案设计二、软件写FLASH三、解决第一次烧录后FPGA无法启动的问题 前言&#xff1a; 一个复杂的嵌入式中&#xff0c;如果对某些实时性要求极高的情况下势必会使用到FPGA来保证&#xff0c;这里面牵扯到给FPGA的程序升级问题&#xff0…

Python 数据分析与可视化 Day 9 - 缺失值与异常值处理技巧

✅ 今日目标 熟练处理数据中的缺失值&#xff08;NaN、None&#xff09;学会识别和处理异常值&#xff08;outliers&#xff09;掌握常用的处理方法&#xff1a;填充、删除、替换、标准差法、箱型图法等为后续机器学习建模打好数据清洗基础 &#x1f4da; 一、缺失值处理&…

概述-1-数据库的相关概念

数据库的相关概念 用户通过SQL操作数据库管理系统&#xff0c;再通过数据库管理系统操作数据库以及数据库中的数据。 数据库 数据库是存储数据的仓库, 数据是有组织的进行存储, DataBase简称&#xff08;DB&#xff09; 数据库管理系统 操纵和管理数据库的大型软件, DataB…

可视化大屏展示

可视化大屏是一种将大量数据进行整合、分析&#xff0c;并以直观、形象的可视化方式展示在大屏幕上的信息展示系统。主要组成部分分为2个&#xff1a;硬件设备、软件系统。 一、大屏价值 1、数据可视化&#xff1a;将复杂的数据转化为直观的图形、图表和地图等&#xff0c;使数…

服务器被入侵的常见迹象有哪些?

&#x1f6a8; 服务器被入侵的常见迹象 &#x1f7e2; 一、系统和资源异常 CPU、内存或网络流量异常飙高 即使没有业务负载&#xff0c;资源长期占满。 磁盘空间突然被写满 可疑大文件或日志暴涨。 系统负载显著升高 uptime、top 显示 load average 异常。 &#x1f7e1;…

日本生活:日语语言学校-日语作文-沟通无国界(5)-题目:我的一天

日本生活&#xff1a;日语语言学校-日语作文-沟通无国界&#xff08;5&#xff09;-题目&#xff1a;我的一天 1-前言2-作文原稿3-作文日语和译本&#xff08;1&#xff09;日文原文&#xff08;2&#xff09;对应中文&#xff08;3&#xff09;对应英文 4-老师评语5-自我感想&…

前端领域的技术热点与深度解析

&#x1f525; 一、框架革新&#xff1a;React、Vue、Svelte 的进化方向 React 19 实验版 Server Components 深化&#xff1a;支持流式渲染与异步状态管理&#xff0c;SSR 性能提升40%。 并发模式优化&#xff1a;减少渲染阻塞&#xff0c;复杂交互场景延迟降低35%。 Vue 3…

【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)

注意&#xff1a;考虑到热更新的内容比较多&#xff0c;我将热更新的内容分开&#xff0c;并全部整合放在【unity游戏开发——网络】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、联网游戏类型划分二、核心通信协议对比三、开发选择指南专栏推荐完结 …

Java-60 深入浅出 分布式服务Paxos 算法优化 如何保证Paxos算法的活性

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月16日更新到&#xff1a; AI炼丹日志-29 - 字节…

一阶线性双曲型偏微分方程组的特征值与通解分析

问题3 求系统 U u + A U x = 0 U_u + A U_x = 0 Uu​+AUx​=0 的特征并写出通解,其中矩阵 A A A 如下: A 1 = ( 3 2 1 0 2 1 0 0 1 ) , A 2 = ( 3 2 1 0 2 1 0 0 − 1 ) , A_1 = \begin{pmatrix} 3 & 2 & 1 \\ 0 & 2 & 1 \\ 0 & 0 & 1 \end{pmatr…

解锁AI无限潜能!景联文科技数据产品矩阵再升级:多语言题库、海量语料、垂域代码库,全面赋能大模型训练

景联文科技持续聚焦AI数据需求前沿&#xff0c;全新发布包含中文题库数据集、英文题库数据集、算法代码数据库、英文语料、中文语料、垂直领域数据、小语种数据在内的七大高质量数据集产品系列。 此次发布的数据集覆盖广泛的应用场景&#xff0c;通过严格的清洗与结构化处理&am…

OSPF(开放最短路径优先)

一、ospf简介 OSPF是基于链路状态的内部网关协议&#xff0c;与距离矢量协议不同&#xff0c;链路状态协议通告的是链路状态而不是路由表。OSPF是用于自治系统&#xff08;AS&#xff09;内部的路由决策,特点有&#xff0c;收敛速度快&#xff0c;安全性好&#xff0c;避免环路…

全面拥抱vue3

Vue 3 性能全面解析&#xff1a;为何性能飞跃提升 Vue 3 在性能方面实现了质的飞跃&#xff0c;相比 Vue 2 在多个维度都有显著提升。以下是 Vue 3 性能优化的全面解析&#xff1a; 一、核心架构优化 1. 响应式系统重写&#xff08;Proxy 替代 defineProperty&#xff09; …

C#最佳实践:考虑为类重写ToString()方法

C#最佳实践:考虑为类重写ToString()方法 在 C# 编程的日常开发中,ToString()方法是一个既基础又容易被忽视的重要成员。它是System.Object类的虚方法,所有类都继承自System.Object,这意味着每个类都拥有ToString()方法。然而,默认的ToString()方法往往无法满足实际需求,…

从0开始学习计算机视觉--Day05--优化

除了得到最小的W之外&#xff0c;如何节省这个探索最优W的过程&#xff0c;也是很重要的一点。假如把这个过程比作从山上的顶点开始下山&#xff0c;把图中必定游玩的经典比作最优权重&#xff0c;那么节省的过程&#xff0c;就是找到下山的最短路径的过程。而在下山的过程中&a…

OpenCV计算机视觉实战(14)——直方图均衡化

OpenCV计算机视觉实战&#xff08;14&#xff09;——直方图均衡化 0. 前言1. CLAHE 自适应均衡1.1 应用场景1.2 实现过程 2. 直方图反向投影2.1 应用场景2.2 实现过程 3. 基于颜色的目标追踪小结系列链接 0. 前言 在图像处理与计算机视觉领域&#xff0c;直方图技术是最直观且…

基于uniapp的老年皮肤健康管理微信小程序平台(源码+论文+部署+安装+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统背景 近年来&#xff0c;我国人口老龄化进程不断加快&#xff0c;据国家统计局数据显示&#…

MySQL(106)如何设计分片键?

设计分片键&#xff08;Sharding Key&#xff09;是数据库分片的核心&#xff0c;它决定了将数据分配到不同分片的方式。一个好的分片键应该能够均衡地分布数据&#xff0c;避免热点问题&#xff0c;提高查询性能。下面将详细介绍如何设计分片键&#xff0c;并结合代码进行说明…

汽车一键启动升级手机控车

汽车一键启动升级手机控车实现手机远程启动&#xff0c;不改变原车任何功能且全部免接线。升级后原车遥控器能在有效范围内启动车辆。移动管家手机控车一键启动系统用手机远程控制&#xff0c;完美兼容原车遥控器。支持长安、别克、宝马、奥迪等众多系列车型&#xff0c;市场99…