目录

背景信息

Editor.md是2015年开源的项目,那时还没有VUE3版本,所以网上也较少VUE3集成Editor.md的示例。不过还是有些大牛分享了集成的方法。

集成方法

1、下载和安装editor.md、scriptjs及 jquery.js

2、封装一个组件EditorMarkdown,以下为 EditorMarkdown.vue的内容。

3、引用组件EditorMarkdown,以下为App.vue的内容。

运行效果

父组件往子组件传递参数(场景:单击文档的导航节点时可往编辑器中传值),完成编辑器的初始化。



背景信息

Editor.md是2015年开源的项目,那时还没有VUE3版本,所以网上也较少VUE3集成Editor.md的示例。不过还是有些大牛分享了集成的方法。

例如:

vue集成editor.md_流年ln的博客-CSDN博客_vue使用editor.mdk

可是不能直接使用,需要进行一些调整。经过不断尝试,调整成功。

集成方法

1、下载和安装editor.md、scriptjs及 jquery.js

  • editor.md最新版本: v1.5.0,更新于 2015-06-09

Github下载

或者通过 NPM 安装:

npm install editor.md

将下载后的文件放置到VUE3项目的public/static目录下(VUE2是放置到与src并列的static目录中)。

放置好后的目录结构如下(EditorMarkdown.vue为下一步要创建的组件——集成了editor.md,且可获取Markdown内容和解析后的Html内容,可在任意页面中引用)。

  • 安装scriptjs
npm install scriptjs --save
  • 下载jquery.js

从官网下载:Download jQuery | jQuery

建议下载非压缩版的,便于调试,例如Download the uncompressed, development jQuery 3.6.1

将jquery.js放置到:static/editor.md/lib/jquery.js(下文组件中会引用此路径)。

2、封装一个组件EditorMarkdown,以下为 EditorMarkdown.vue的内容。

<template><div><link rel="stylesheet" href="/static/editor.md/css/editormd.css"><!-- editormd --><button id="get-md-btn">Get Markdown</button><button id="get-html-btn">Get HTML</button><div id="editor" style="z-index: 10" /></div>
</template><script>
import scriptjs from 'scriptjs'export default {name: 'EditorMarkdown',props: {modelValue: {type: String,required: false,default: ''},height: {type: String,required: false,default: '720px'}},data() {return {editor: {}}},mounted() {// 设置延迟初始化markdown编辑器, 因为只会初始化一次,需要等待数据加载完成之后再初始化setTimeout(() => {this.initEditor()}, 300)},methods: {initEditor() {(async() => {await this.fetchScript('/static/editor.md/lib/jquery.js')await this.fetchScript('/static/editor.md/editormd.js')// await this.fetchScript('/static/editor.md/editormd.amd.js')this.$nextTick(() => {// 内容var content = this.modelValueconst editor = window.editormd('editor', {path: '/static/editor.md/lib/',height: this.height,emoji: true,// 开启图片上传,图片上传重写了的imageUpload: true,saveHTMLToTextarea: true,// 可分区域定制样式主题theme        : (localStorage.theme) ? localStorage.theme : "dark",editorTheme  : (localStorage.editorTheme) ? localStorage.editorTheme : "3024-night",previewTheme : (localStorage.previewTheme) ? localStorage.previewTheme : "default",imageFormats : ["jpg", "jpeg", "gif", "png", "bmp", "webp","ico"],// 这里需要考虑返回值,所以封装了一层imageUploadURL: '/markdown/upload', //需在服务端定义接口htmlDecode: true, // 识别html标签// 监听更新,更新父组件值change: function() {this.$emit('update:modelValue', this.getMarkdown())},// 退出全屏onfullscreen: function() {// 原生JS修改层级var editor = document.getElementById('editor')editor.style['z-index'] = 13},// 全屏onfullscreenExit: function() {// 原生JS修改层级var editor = document.getElementById('editor')editor.style['z-index'] = 10},// 加载完成后再设置内容onload: function() {this.setMarkdown(content)// 加载ctrl + v粘贴图片插件window.editormd.loadPlugin('/static/editor.md/plugins/image-handle-paste/image-handle-paste', function() {editor.imagePaste()})}})const vm = this// 监听,改变父组件的值editor.on('change', function() {vm.$emit('update:modelValue', this.getMarkdown())})// this.editor = editor// eslint-disable-next-line no-undef$("#get-md-btn").bind('click', function(){  //获取左侧Markdown内容alert(editor.getMarkdown());});// eslint-disable-next-line no-undef$("#get-html-btn").bind('click', function() { //获取右侧html内容alert(editor.getHTML());});})})()},fetchScript(url) {return new Promise((resolve) => {scriptjs(url, () => {resolve()})})}}
}
</script><style scoped>
/* 上传图片弹窗样式有点问题,可能是冲突了 */
#editor::v-deep(.editormd-dialog-header) {padding: 0 20px;
}
</style>

3、引用组件EditorMarkdown,以下为App.vue的内容。

<template>
<!--  <img alt="Vue logo" src="./assets/logo.png">-->
<!--  <HelloWorld msg="Welcome to Your Vue.js App"/>--><h1>VUE3项目中引入 Editor.md</h1><EditorMarkdown modelValue="Welcome to Your Vue.js 3 + TypeScript App"/></template><script>
// import HelloWorld from './components/HelloWorld.vue'
import EditorMarkdown from "@/components/EditorMarkdown.vue";export default {name: 'App',components: {EditorMarkdown}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

运行效果

单击上面的按钮可以分别获取左侧的Markdown内容(用于提交给服务端)和右侧的Html内容。

父组件往子组件传递参数(场景:单击文档的导航节点时可往编辑器中传值),完成编辑器的初始化。

修改APP.VUE的组件引用,通过组件EditorMarkdown 中定义的props/modelValue参数进行进行传值。

<EditorMarkdown modelValue="Welcome to Your Vue.js 3 + TypeScript App"/>

效果:编辑区显示了modelValue设置的值。

VUE3集成Markdown编辑器(http://editor.md.ipandao.com/)相关推荐

  1. 开源在线的MarkDown编辑器 --【Editor.md】

    开源在线的MarkDown编辑器 --[Editor.md] 下载 官网地址: https://pandao.github.io/editor.md/index.html Gitee 地址:https ...

  2. 在HTML页面中引用Markdown编辑器(Editor.md)

    目录 1.下载Ediotor.md 2.引入Ediotor.md 3.确定Ediotor.md在哪里显示 最近写博客项目,用到了Markdown编辑器,这里介绍一款国内好用的Markdown编辑器:E ...

  3. Django集成Markdown编辑器【附源码】

    专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m ...

  4. jsp SpringMVC 前台页面集成Markdown编辑器及在页面上实现文档编辑保存预下载

    首先在官网下载文档编辑插件 插件项目地址:Editor.md - 开源在线 Markdown 编辑器 将下载好的的插件项目解压,把解压好的包拷贝到我们项目的 webapp-static静态资源文件下. ...

  5. 前端页面插件集成-Markdown编辑器

    页面插件集成-Markdown 下载MarkDown的插件包 引入css.js.Jquary文件 定义一个textarea区域作为MarkDown的载体 初始化Markdown编辑器 最终效果 下载M ...

  6. 127.0.0.1/dokuwiki/install.php,DokuWiki安装+集成markdown编辑器editor.md

    安装 安装php和nginx yum install -y php70w php70w-gd php70w-xml php70w-fpm nginx 开机自启动 systemctl enable ng ...

  7. Vue3——v-md-editor(markDown编辑器)使用教程

    Vue3--v-md-editor安装使用教程 安装 yarn add @wangeditor/editor # 或者 npm install @wangeditor/editor --saveyar ...

  8. Vue + editor.Md 双向数据绑定Markdown编辑器(vue-editormd-wrap)

    Vue + editor.Md 双向数据绑定组件(vue-editormd-wrap) 先贴上组件的npm主页和源码,如果有下载了开发过程中build版本的用户,将无法使用,请更新为最新版就可以正常使 ...

  9. 快速入门 Editor.MD---在Web项目里使用 Markdown 编辑器

    博主参考的文章 什么是Markdown Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. 最直观的方法,CSDN写新文章用Markd ...

最新文章

  1. Google、高通都在研究的芯片架构,是他们对抗ARM的武器
  2. Token认证微服务
  3. JavaSE——常用类库(上)(泛型、Objects、Math、ArraysBigDecimal类)
  4. java 嵌套事务_Java事务以及嵌套事务
  5. 分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)...
  6. centos 更新源_centos6 更换yum源
  7. 数字电路反相器符号_数字电路器件——门电路——与门电路、或门电路、非门电路及实例...
  8. 懒人神器——自制自动写字机
  9. 西门子s1200教程_西门子S-1200入门PLC视频教程百度云资源下载
  10. Valgrind User Manual
  11. IDEA好看的主题(自用)
  12. origin汉字问题与特殊符号
  13. mysql 时间语句,mysql语句大全_mysql时间查询常用语句大全
  14. Python绘图Turtle库详解
  15. 第二篇 界面开发 (Android学习笔记)
  16. IEEE 754 32bit浮点标识
  17. 用VUE实现一个具有登陆、注册等功能的网站【详细步骤】
  18. 推荐最适合IT人自学的6个视频网站、8个社区网站,欢迎补充
  19. 某大型展会现场病毒排查事例及安全规划建议
  20. PHP--根据手机号-淘宝平台获取归属地运营商信息

热门文章

  1. 推荐几个 Windows 小工具
  2. 如何考评一名前端工程师?
  3. python程序设计从基础到开发课后题答案夏敏捷_[转载] python程序设计应用教程夏敏捷答案第八章_Python程序设计:从基础到开发...
  4. 景区无线wifi覆盖解决方案
  5. [白馬下載器] MiPony 1.2.0 多语言免费版
  6. 【华为jalor5框架--山寨版实现】【转载】
  7. SIGIR‘22 推荐系统论文之多样性篇
  8. 如何利用老毛桃安装window系统
  9. 达内C语言学习(day03)
  10. 泊松方程 matlab,MATLAB编程求解二维泊松方程