前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue-html5-editor开发Vue富文本

vue-html5-editor开发Vue富文本

作者头像
明知山
发布2020-09-03 11:22:17
1.4K0
发布2020-09-03 11:22:17
举报
文章被收录于专栏:前端开发随笔前端开发随笔

安装 vue-html5-editor

代码语言:javascript
复制
npm install vue-html5-editor --save-dev

默认使用的是font-awesome提供的图标也要安装font-awesome

代码语言:javascript
复制
npm install font-awesome.css

该富文本的配置较多,所以单独建了个htmlEditor.js的文件夹然后引到main.js中去

htmlEditor.js

在这里我有对自己的项目进行了相应的更改,可以去官方文档的地址复制原版的,图片的上传到服务器也进行了配置

代码语言:javascript
复制
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: "http://uploadFile", //上传图片的接口域名
        headers: {},
        params: {
          'key': 'aaaaa', //这里写接口的额外参数
          'is_https': 1
        },
        fieldName: 'file'
      },
      // 压缩参数,默认使用localResizeIMG进行压缩,设置为null禁止压缩
      // width和height是文件的最大宽高
      compress: {
        width: null,
        height: null,
        quality: 80
      },
      // 图片上传成功之后的回调
      uploadHandler(responseText) {
        var res = JSON.parse(responseText);
        if (res.status == 200) {
          return res.info.url
        } else {
          alert(res.msg)
        }
      }
    },
    // 语言,内建的有英文(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",
      "image",
      "link",
      //   "unlink",
      // "tabulation",
      "hr",
      "eraser",
      "undo",
      //   "full-screen",
      //   "info",
    ],
    // 扩展模块,具体可以参考examples或查看源码
    // extended modules
    modules: {
      //omit,reference to source code of build-in modules
    }
  };
  Vue.use(VueHtml5Editor, opt);
}

将htmlEditor.js和font-awesome导入到main.js中

代码语言:javascript
复制
import VueHtml5Editor from './htmlEditor.js'
import "font-awesome/css/font-awesome.css"
Vue.use(VueHtml5Editor)

组件

代码语言:javascript
复制
<template>
  <div class="content">
    <vue-html5-editor :content="content" :height="400" @change="updateData"></vue-html5-editor>
  </div>
</template>  

<script>
export default {
  data() {
    return { content: "请输入发表内容" };
  },
  methods: {
    updateData(e = "") {
      this.content = e;
      console.info(e);
    }
  }
};
</script>  
<style scoped>
</style>  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • htmlEditor.js
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档