前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊一聊我的文本编辑器

聊一聊我的文本编辑器

作者头像
裴大头
发布2022-01-17 13:47:16
4640
发布2022-01-17 13:47:16
举报
文章被收录于专栏:裴大头的专栏

说一下我博客的文本编辑器

最初使用的若依自带的quill,刚开始使用就会有些卡顿,刚开始还不太在意,后来慢慢发现确实不爽,嵌入代码块时还会卡死浏览器,之后思考许久决定换一个文本编辑器。

最初还是在吧目光放到流行的富文本编辑器上,于是尝试了wangEditor,一开始没发现什么问题,到了编辑出错时,删除文章内容时光标会跳到最后一行,找了很多方法,还是不能完美解决,于是放弃···

然后,我又看到了好多人推荐的UEditor富文本编辑器,刚一上手果断放弃,太重了,使用太复杂,哈哈哈,不符合我

于是乎,我看到了这么一篇文章,说的是现在不太流行富文本编辑器了,都是再用markdown编辑器,于是第一个就看到mavonEditor,也就确定了(现在的编辑器)

简单说一下使用过程

  1. 第一步下依赖
代码语言:javascript
复制
npm install mavon-editor --save
复制
  1. 第二步main.js引用
代码语言:javascript
复制
import  mavonEditor  from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
Vue.use(mavonEditor)
复制

3.第三步组件里使用

html代码

代码语言:javascript
复制
<template>
  <div>
     <mavon-editor
  	:placeholder="'开始创作···'"
  	:toolbars="toolbars"
  	:toolbarsBackground="'#f9f9f9'"
  	@change="change"
  	@imgAdd="imgAdd"
  	@imgDel="imgDel"
  	ref="md"
  	style="height: 70vh"
  	v-model="article.richText"
	/>
    </div>
</template>
复制

js代码

代码语言:javascript
复制
<script>
    export default {
        data() {
            return {
                //参数
                toolbars: {
                    bold: true, // 粗体
                    italic: true, // 斜体
                    header: true, // 标题
                    underline: true, // 下划线
                    strikethrough: true, // 中划线
                    mark: true, // 标记
                    superscript: true, // 上角标
                    subscript: true, // 下角标
                    quote: true, // 引用
                    ol: true, // 有序列表
                    ul: true, // 无序列表
                    link: true, // 链接
                    imagelink: true, // 图片链接
                    code: true, // code
                    table: true, // 表格
                    fullscreen: false, // 全屏编辑
                    readmodel: false, // 沉浸式阅读
                    htmlcode: true, // 展示html源码
                    help: true, // 帮助
                    /* 1.3.5 */
                    undo: true, // 上一步
                    redo: true, // 下一步
                    trash: true, // 清空
                    save: false, // 保存(触发events中的save事件)
                    navigation: true, // 导航目录
                    alignleft: true, // 左对齐
                    aligncenter: true, // 居中
                    alignright: true, // 右对齐
                    subfield: true, // 单双栏模式
                    preview: false // 预览
                },
            }
        },
        methods: {
            imgAdd (pos, file) {
                // 第一步.将图片上传到服务器.
                const formData = new FormData();
                formData.append('image', file);
                uploadImage(formData).then(res => {
                    this.$refs.md.$img2Url(pos, process.env.VUE_APP_BASE_API + res.imgUrl)
                })
            },
            imgDel (pos) {
                delete this.img_file[pos]
            },
            change (value, render) {
                this.html = render
            },
        }
    }
</script>
复制

需要注意的是,默认是md格式内容,this.html里才是html代码

好了,这下就可以使用了

然后前端展示的代码格式可以根据之前的 => 代码块高亮

也可以使用下面的方式,是我的网友凡蜕博客推荐的prism.js

使用方法参照如何在vue中引入Prism.js

今天就分享这些,欢迎大家留言交流

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说一下我博客的文本编辑器
    • 简单说一下使用过程
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档