博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端富文本编辑器 vue-html5-editor
阅读量:6604 次
发布时间:2019-06-24

本文共 5203 字,大约阅读时间需要 17 分钟。

1..项目创建与初始化

在安装好脚手架的依赖后,要执行 npm install vue-html5-editor -S 来安装这个富文本插件,由于这个富文本插件的图标是依赖font-awesome.css的,所以要cnpm install font-awesome --save安装这个css然后在main.js中引入这个css   import 'font-awesome/css/font-awesome.min.css'

2.使用vue-html5-editor富文本编辑器

新建一个common文件夹用于存放我们的工具类js文件,然后将下面的代码copy进去:

 

import Vue from 'vue'import VueHtml5Editor from 'vue-html5-editor'export default function () {  let opt = {    // 全局组件名称,使用new VueHtml5Editor(options)时该选项无效    name: "vue-html5-editor",    // 是否显示模块名称,开启的话会在工具栏的图标后台直接显示名称    showModuleName: true,    // 自定义各个图标的class,默认使用的是font-awesome提供的图标    icons: {      text: "fa fa-pencil",      color: "fa fa-paint-brush",      font: "fa fa-font",      align: "fa fa-align-justify",      list: "fa fa-list",      link: "fa fa-chain",      unlink: "fa fa-chain-broken",      tabulation: "fa fa-table",      image: "fa fa-file-image-o",      hr: "fa fa-minus",      eraser: "fa fa-eraser",      undo: "fa-undo fa",      "full-screen": "fa fa-arrows-alt",      info: "fa fa-info",    },    // 配置图片模块    image: {      // 文件最大体积,单位字节        sizeLimit: 512 * 1024 * 10,      // 上传参数,默认把图片转为base64而不上传      // upload config,default null and convert image to base64      upload: {        url:null,        headers:{},        params: {},        fieldName:{}      },      // 压缩参数,默认使用localResizeIMG进行压缩,设置为null禁止压缩      // width和height是文件的最大宽高      compress: {        width: 600,        height: 600,        quality: 80      },      // 响应数据处理,最终返回图片链接      uploadHandler(responseText){//      default accept json data like  {ok:false,msg:"unexpected"} or {ok:true,data:"image url"}        var json = JSON.parse(responseText);                if(json.status == 200){                    return json.data                }else{                    alert(json.error)                }      }    },    // 语言,内建的有英文(en-us)和中文(zh-cn)    language: "zh-cn",    // 自定义语言    i18n: {      "zh-cn": {        "align": "对齐方式",        "image": "图片",        "list": "列表",        "link": "链接",        "unlink": "去除链接",        "table": "表格",        "font": "文字",        "full screen": "全屏",        "text": "排版",        "eraser": "格式清除",        "info": "关于",        "color": "颜色",        "please enter a url": "请输入地址",        "create link": "创建链接",        "bold": "加粗",        "italic": "倾斜",        "underline": "下划线",        "strike through": "删除线",        "subscript": "上标",        "superscript": "下标",        "heading": "标题",        "font name": "字体",        "font size": "文字大小",        "left justify": "左对齐",        "center justify": "居中",        "right justify": "右对齐",        "ordered list": "有序列表",        "unordered list": "无序列表",        "fore color": "前景色",        "background color": "背景色",        "row count": "行数",        "column count": "列数",        "save": "确定",        "upload": "上传",        "progress": "进度",        "unknown": "未知",        "please wait": "请稍等",        "error": "错误",        "abort": "中断",        "reset": "重置"      }    },    // 隐藏不想要显示出来的模块    hiddenModules: [],    // 自定义要显示的模块,并控制顺序    visibleModules: [//    "text",//    "color",      "font",      "align",//    "list",//    "link",//    "unlink",//    "tabulation",      "image",//    "hr",//    "eraser",      "undo",//    "full-screen",//    "info",    ],    // 扩展模块,具体可以参考examples或查看源码    // extended modules    modules: {      //omit,reference to source code of build-in modules    }  };  Vue.use(VueHtml5Editor, opt);}

接着在main.js中引入这个初始化的函数:

import initRichText from './common/initHTMLEditor.js'import 'font-awesome/css/font-awesome.min.css'

3.使用组件

这个height属性是设置内容区的高度,content是内容区的数据内容,@change事件是内容区的监听事件,会在发生变化时触发,该函数接收一个参数,表示当前编辑器中的内容。运行结果如下(这里对图片的操作是转成base64的字符串):

4.常见问题解决

(1)自定义工具栏的模块

如果不想要显示这么多的工具,则只要配置visibleModules即可:

 修改initHTMLEditor.js  中的配置即可

(2)移动端图片上传样式的处理

这里我没有配置服务端的上传文件的接口,所以我就直接将图片转成base64的来处理。但是这样会有问题,在PC端图片是可以修改大小的,但是在移动端上传的图片上是原图,也就是很大,图文混排的时候非常不好看,也不好编辑。这时候我做的处理挺投机取巧的,但是也是可行的方法。我们知道change函数是在内容发生变化时触发的,这时候我们只要将获取到的内容做一下修改即可,看代码:

updateData(e = "") {    let c1 = e.replace(/

这样就可以了。

(3)图片上传的主要问题

图片上传的方法这里分两种。

第一种是默认把图片转为base64而不上传,最后点击发布上传所有。这里有个缺点是如果上传的图片太大而且有多张的话转为base64会很大,会出现因为文件太大上传不过去的情况,所以可以放弃这种方法。

第二种是在配置文件中(上面说的新建的js中)修改几行代码即可。原理是每上传一张图片,先上传到服务器然后返回一个图片链接地址,至于返回链接地址怎么展示在页面的问题,插件已经为我们封装的很好,直接在下面的uploadHandler函数return返回的链接就可以啦。在做的过程中出现了上传图片失败问题,原因出在接口问题上,这里的接口写成input file上传不是base64的接口就可以。

// 配置图片模块    image: {      // 文件最大体积,单位字节        sizeLimit: 512 * 1024 * 10,      // 上传参数,默认把图片转为base64而不上传      // upload config,default null and convert image to base64      upload: {        url:'图片上传接口地址',        headers:{},        params: {},        fieldName:'file'      },      // 压缩参数,默认使用localResizeIMG进行压缩,设置为null禁止压缩      // width和height是文件的最大宽高      compress: {        width: 600,        height: 600,        quality: 80      },      // 响应数据处理,最终返回图片链接      uploadHandler(responseText){//      default accept json data like  {ok:false,msg:"unexpected"} or {ok:true,data:"image url"}        var json = JSON.parse(responseText);                if(json.status == 200){                    return json.data                }else{                    alert(json.error)                }      }    },

 

转载于:https://www.cnblogs.com/wanan-01/p/9878681.html

你可能感兴趣的文章
Spring MVC核心技术
查看>>
Linux监控平台搭建(三)--自定义监控项目、问题告警及处理
查看>>
TCP协议如何保证传输的可靠性
查看>>
Spring Cloud + Spring Boot + Mybatis + shiro + RestFul + 微服务
查看>>
Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
建站心得之discuz门户程序相比ZBLOG具有哪些优势[图]
查看>>
编程之美 测试赛 石头剪刀布
查看>>
签名问题
查看>>
软件开发各阶段交付物列表
查看>>
2018-05-24 Linux学习
查看>>
Oracle数据库之SQL语句练习
查看>>
ntp服务器的搭建
查看>>
我的友情链接
查看>>
sysstat 安装
查看>>
《你必须知道的.NET》 - 书摘精要
查看>>
六、nginx搭建织梦DedeCms网站
查看>>
Tair学习小记
查看>>
网卡绑定(服务器&&交换机),缓存服务器Squid架构配置
查看>>
web网站加速之CDN(Content Delivery Network)技术原理
查看>>
Redis 数据结构-字符串源码分析
查看>>