如何允许网页中的编辑器访问剪切板_Vditor下一代的 Markdown 编辑器,为未来而构建...

Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得(富文本)、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React、Angular,提供桌面版

f57b9f195a0dfbdf70789047478c7a7c.png
Markdown

背景

随着 Markdown 排版方式的普及,越来越多的应用开始集成 Markdown 编辑器。目前主流可集成的 Markdown 编辑器现状如下:

  • 有的仅支持分屏预览,即编辑区和预览区分离
  • 有的同时支持所见即所得和分屏预览,但所见即所得模式下不能完整支持 Markdown 语法排版
  • 几乎没有类似 Typora 的即时渲染

而这三点恰好对应了三种应用场景:

  • 分屏预览:适配传统的 Markdown 使用场景,适合大屏下编辑排版
  • 所见即所得:对不熟悉 Markdown 的用户友好,熟悉 Markdown 的用户也可以无缝使用
  • 即时渲染:理论上这是最为优雅的 Markdown 编辑方式,让熟悉 Markdown 的用户能够更专注于内容创作

所以,一个能够适配应用场景的 Markdown 编辑器至关重要,它需要考虑到:

  • 传统 Markdown 用户的使用场景,提供分屏预览
  • 富文本编辑用户的使用场景,提供所见即所得
  • 高阶 Markdown 用户的使用场景,提供即时渲染

Vditor 在这些方面做了努力,希望能为现代化的通用 Markdown 编辑领域做出一些贡献

特性

  • 支持三种编辑模式:所见即所得(wysiwyg)、即时渲染(ir)、分屏预览(sv)
  • 支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、五线谱、多媒体、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染
  • 内置安全过滤、导出、图片懒加载、任务列表、at、多平台预览、多主题切换、复制到微信公众号功能
  • 实现 CommonMark 和 GFM 规范,可对 Markdown 进行格式化和语法树查看,并支持 10+ 项配置
  • 工具栏包含 36+ 项操作,除支持扩展外还可对每一项中的快捷键、提示、提示位置、图标、点击事件、类名、子工具栏进行自定义
  • 表情自动补全,设置常用表情,支持表情自定义
  • 可使用拖拽、剪切板粘贴上传,显示实时上传进度,支持 CORS 跨域上传
  • 实时保存内容,防止意外丢失
  • 录音支持,用户可直接发布语音
  • 粘贴 HTML 自动转换为 Markdown,如粘贴中包含外链图片可通过指定接口上传到服务器
  • 支持主窗口大小拖拽、字符计数
  • 多主题支持,内置黑白绿三套主题
  • 多语言支持,内置中、英、韩文本地化
  • 支持主流浏览器,对移动端友好

? 使用场景

  • 完整示例
  • 如何在 React 中使用
  • 如何在 Vue 中使用
  • 如何在 Angular 中使用

? 页面渲染

  • 完整示例
  • 自定义渲染
  • 功能渲染 - Markdown2HTML/大纲/数学公式/脑图/图表/流程图/甘特图/时序图/五线谱/多媒体/代码高亮/代码复制/graphviz
  • 渲染配置 - 锚点/语音阅读/图片懒加载/渲染前回调/渲染后回调

⚙️️ 基本配置

  • 编辑模式 - wysiwyg/ir/sv
  • 大小及自适应
  • 多语言
  • CDN 配置
  • 回调事件 - 渲染完成/用户输入/聚焦/失焦/选择文字/ESC/Ctrl+Enter
  • 实用小特性 - tab/打字机模式/默认展现大纲/内容为空的提示

? 高级配置

  • Markdown 配置 - 自动空格/段落开头空两格/矫正术语/矫正标点/启用目录/禁用脚注/wysiwyg & ir 模式不渲染代码块/解析 settext/不过滤 XSS/主题/为列表添加标记
  • 工具栏 - 自定义按钮/新增按钮/固定/隐藏
  • 文件上传
  • 预览 - 延迟解析/HTML 字符串处理/DOM 处理/预览请求
  • 自动提示 - 自定义表情/表情图片地址/表情提示/@ 及其 debounce
  • 字数统计 - Markdown/文本/最大字数提示
  • 拖拽调整编辑器高度 - 启用/位于底部/位于顶部/拖拽结束回调
  • 代码块高亮 - 启用高亮/代码块块样式/行号
  • 数学公式 - KaTeX,MathJax 引擎切换/设置 MathJax 宏定义/允许 $ 后出现数字
  • 本地缓存 - 设置默认值/设置缓存 ID/清除缓存/禁用缓存/启用缓存/缓存回调

? 基本方法

  • 主题修改 - 编辑器/内容/代码块渲染/自定义主题
  • 文本操作 - 更新内容/插入内容/选中指定内容/更新选中内容/删除选中内容/设置预览区域内容
  • 获取 - Markdown/HTML/选中的文本/编辑器模式/光标位置/HTML->Markdown
  • 其他方法 - 设置为只读/聚焦/失焦/消息提示

? 暖心示例

  • 移动端最佳配置
  • 多个编辑器共存
  • 在 sv 模式下点击工具栏上的格式化可对 Markdwon 原文进行格式化
  • 点击工具栏上的开发者工具可查看 Markdown 语法树

渲染图

b6280ee346480ac84fca646f542a58b2.png
UXlTi.png

地址

地址:https://www.itnavs.com/navdet/1393.html

be10d59e1c47833db79de310476cad11.png
vipbic

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

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

相关文章

java ocsp请求_java – 客户端证书上的OCSP吊销

如果仅使用客户端的java.security.cert.X509Certificate,如何使用OCSP手动检查java中的证书撤销状态?我看不清楚这样做的明确方法.或者,我可以让tomcat自动为我做,你怎么知道你的解决方案是真的?解决方法:我发现了一个最优秀的解决方案/**54 * This is a…

java模型给泛型_【一天一个基础系列】- java之泛型篇

java 5以后,java引入了“参数化类型”的概念,允许程序在创建集合时指定集合元素的类型java 7之前,如果使用带泛型的接口、类定义变量,那么调用构造器创建对象时构造器的后面也必须带泛型比如//java 7之前List list new ArrayList…

mpython掌控板作品_第1课 Arduino micro:bit 掌控板 创客教育常用的3类主控板

有很多朋友想学习创客,问我怎么学习。我建议他先百度一下“创客”,看看有什么感觉。结果还是很懵,五花八门,什么都有,找不到核心。简单理解,就是以前讲的DIY,自己动手,制作一个东西。…

redis启动没反应_Promethues如何针对Redis进行监控

需求:采用redis_exporter 收集数据,promethus采集redis_exporter数据,granfana展示数据一、简易安装redisyum install -y redisrpm -qa |grep redislsof -i :6379rpm -ql redissystemctl start redis找到配置文件/etc/redis.conf,修改 requir…

网上书店管理系统java部分代码_网上书店管理系统 java语言

【实例简介】整个系统,包括数据库,安装上就能用,非常适合做课程设计的作业或者毕业设计的作业【实例截图】【核心代码】OnLineBookStore└── OnLineBookStore├── WebRoot│ ├── META-INF│ │ └── MANIFEST.MF│ ├── W…

java自定义标签遍历_自定义标签 - CarlDing的个人页面 - OSCHINA - 中文开源技术交流社区...

EL的不足,由JSTL来加强 -> 自定义标签来实现。1:自定义标签1:自定义标签也是类。2:让用户在JSP页面使用,不引用Java代码的情况下,调用Java代码。2:标签开的类的继承关系3:快速的…

python宏替换_简单的宏替换

简单的宏替换1.宏定义必须写在第一次使用该宏定义的代码之前;2.宏定义不是以分号结束的3.#define string1 string2 之间至少要有一个空格4.string 1称为宏,string2 称为宏扩展5. 宏名用大写的字母表示是一个习惯6.使用宏的好处:a 简化程序的书…

python逆序数怎么求_怎么算逆序数?急~~~!!!

展开全部可使用直bai接计数法,计算一个du排列的逆序数的直接zhi方法是逐个dao枚举逆序,同时统计个内数。举个例子:标准列是容1 2 3 4 5,那么 5 4 3 2 1 的逆序数算法:看第二个,4之前有一个5,在标…

java解析xml中文字符乱码_Eclipse读取xml中文乱码问题解决

【mysql】高可用集群之MMM一.复制的常用拓扑结构 复制的体系结构有以下一些基本原则: (1) 每个slave只能有一个master: (2) 每个slave只能有一个唯一的服务器ID: (3) 每个maste ...公钥私钥 ssl/tsl的概念一,公钥私钥1,公钥和私钥成对出现2,公开的密钥叫公钥,…

springboot整合rocketmq_面试官:简单说一下RocketMQ整合SpringBoot吧

前言在使用SpringBoot的starter集成包时,要特别注意版本。因为SpringBoot集成RocketMQ的starter依赖是由Spring社区提供的,目前正在快速迭代的过程当中,不同版本之间的差距非常大,甚至基础的底层对象都会经常有改动。例如如果使用…

java面试常考_JAVA面试常考系列十

JAVA面试常考系列十题目一Servlet是什么?Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的作用是处理客户端请求并生成动态Web内容。一般情况下,Servlet主要…

的ui在vs中显示没有成员_在电脑桌面使用敬业签团队便签怎么设置新增内容在上面显示?...

实时跟进小组成员的各项任务的完成情况,及时将工作任务安排下去,是提高团队工作效率的较为有效的方法。在监督小组成员任务状况以及及时安排工作方面,选择一款支持多人同步在线协作的软件是非常有必要的。敬业签团队便签是一款不受系统、设备…

Java利用二维数组判断节假日_《剑指offer》面试题3 二维数组中的查找 Java版

(二维数组,每行递增,每列递增。输入二维数组和一个整数,判断数组中是否含有此数。)我的方法:拿到题目,根据题目条件我提取出这样一个特性:一个数的右边和下面的数都比它大。于是就可以写出一种递归的方法&a…

多表关联查询_【函数007】 EXCEL多表关联查询实战

继续函数实战系列教程,今天要分享的案例是根据填写的表名自动提取对应表中的数据数据准备:需求说明:我们希望实现,我们选择不同月份,显示对应月份表中的数据!处理方案:1、构建下拉列表(菜单)数据…

java if emun_关于java:Enum与If-else

我有一个需求,其中我需要从事件列表中构建如下的雇员对象。 目前,我的代码如下所示,但是QE发表评论说可能使用枚举而不是多个。有人可以建议我如何用枚举实现这一点。Employee e new Employee();for(Event event:events){if("empid"…

管理动物园动物c++_《过山车大亨》开发商公开新作 建立自己的动物园

知名模拟经营游戏开发商Frontier Developments近日宣布,旗下游戏《动物园之星》(Planet Zoo)即将在不久后发售,登录Steam平台。本座是一款模拟经营游戏,玩家在游戏中将会从零开始,建立一个属于自己的动物园世界。游戏中有多种不同…

Java_数组练习答案_Java数组练习题带答案.doc

《Java数组练习题带答案.doc》由会员分享,可在线阅读,更多相关《Java数组练习题带答案.doc(11页珍藏版)》请在人人文库网上搜索。1、一 填空题1) 数组的元素通过 下标 来访问,数组Array的长度为 Array.length 。2) 数组复制时,将一…

安费诺amphenol连接器_安费诺的Ellison谈信号完整性职业和他的免费开源PCB设计软??件...

Amphenol的信号完整性工程师杰森埃里森(Jason Ellison )Amphenol(安费诺) ICC的高级职员信号完整性工程师杰森埃里森(Jason Ellison )深入了解了网络,给予EE(电子)社区以及他的开源信号完整性项目的重要性。信号完整性工程与其他EE(电子)领域相比如何?他…

python形参和实参命名方式_Python的形参和实参使用方式

Python的形参和实参使用方式形参可以设置参数默认值,设置遵循从右至左原则例如:fun(x0,y1),fun(x,y1),但不可以是fun(x1,y)形参设置可以为数字字符串变量、元组和字典等任意类型数据,元组形参是在变量名前加*,字典形参…

mysql的contains_mysql中json_contains、json_extract等json查询方法的使用

新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作。JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,…