• wangEditor富文本编辑器使用


    一、官网

    开源 Web 富文本编辑器,开箱即用,配置简单

    二、下载安装

    npm install --save @wangeditor/editor-for-vue

    三、在vue中使用

    3.1、抽离组件editor.vue

    在工程的components目录下新建组件editor

    1. <script>
    2. import { Base64 } from 'js-base64'
    3. import { Loading, Message } from 'element-ui'
    4. import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
    5. export default {
    6. components: { Editor, Toolbar },
    7. props: {
    8. html: {
    9. type: String,
    10. default: ''
    11. },
    12. },
    13. data() {
    14. let loading = ''
    15. return {
    16. editor: null,
    17. toolbarConfig: {
    18. toolbarKeys: [
    19. // 一些常用的菜单 key
    20. 'bold', // 加粗
    21. 'italic', // 斜体
    22. 'through', // 删除线
    23. 'underline', // 下划线
    24. 'bulletedList', // 无序列表
    25. 'numberedList', // 有序列表
    26. 'color', // 文字颜色
    27. 'insertLink', // 插入链接
    28. 'fontSize', // 字体大小
    29. 'lineHeight', // 行高
    30. 'uploadImage', // 上传图片
    31. //'uploadVideo',//上传视频
    32. 'delIndent', // 缩进
    33. 'indent', // 增进
    34. 'deleteImage',//删除图片
    35. 'divider', // 分割线
    36. 'insertTable', // 插入表格
    37. 'justifyCenter', // 居中对齐
    38. 'justifyJustify', // 两端对齐
    39. 'justifyLeft', // 左对齐
    40. 'justifyRight', // 右对齐
    41. 'undo', // 撤销
    42. 'redo', // 重做
    43. 'clearStyle', // 清除格式
    44. //'fullScreen' // 全屏
    45. ]
    46. },
    47. editorConfig: {
    48. placeholder: '请输入内容...' ,
    49. MENU_CONF: {
    50. uploadImage: {
    51. server: '/api/blade-resource/oss/endpoint/put-file',
    52. fieldName: 'file',
    53. // 单个文件的最大体积限制,默认为 2M
    54. maximgSize: 10 * 1024 * 1024, // 10M
    55. // 最多可上传几个文件,默认为 100
    56. maxNumberOfimgs: 10,
    57. // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 []
    58. allowedimgTypes: ['image/*'],
    59. // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。
    60. meta: {
    61. // token: 'xxx',
    62. // otherKey: 'yyy'
    63. // img:''
    64. },
    65. // 将 meta 拼接到 url 参数中,默认 false
    66. metaWithUrl: false,
    67. // 自定义增加 http header
    68. headers: {
    69. // Accept: 'text/x-json',
    70. [website.tokenHeader]: `bearer ${getToken()}`,
    71. Authorization: `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`
    72. },
    73. // 跨域是否传递 cookie ,默认为 false
    74. withCredentials: true,
    75. // 超时时间,默认为 10 秒
    76. timeout: 10 * 1000, //10 秒
    77. // 上传前
    78. onBeforeUpload(imgs) {
    79. loading = Loading.service({
    80. lock: true,
    81. text: '图片正在上传中,请耐心等待',
    82. spinner: "el-icon-loading"
    83. });
    84. return imgs;
    85. },
    86. // 自定义插入图片
    87. customInsert(res, insertFn) {
    88. console.log('customInsert', res)
    89. // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理
    90. // 先关闭等待的ElMessage
    91. loading.close();
    92. if (res.code === 200) {
    93. Message({
    94. message: '图片上传成功',
    95. type: 'success'
    96. })
    97. } else {
    98. Message({
    99. message: '图片上传失败,请重新尝试',
    100. type: 'error'
    101. })
    102. }
    103. // 从 res 中找到 url alt href ,然后插入图片
    104. insertFn(res.data.link);
    105. // console.log(res, "res.data")
    106. },
    107. // 单个文件上传成功之后
    108. onSuccess(img, res) {
    109. console.log(`${img.name} 上传成功`, res);
    110. },
    111. // 单个文件上传失败
    112. onFailed(img, res) {
    113. console.log(`${img.name} 上传失败`, res);
    114. },
    115. // 上传进度的回调函数
    116. onProgress(progress) {
    117. console.log('progress', progress);
    118. // progress 是 0-100 的数字
    119. },
    120. // 上传错误,或者触发 timeout 超时
    121. onError(img, err, res) {
    122. console.log(`${img.name} 上传出错`, err, res);
    123. }
    124. }
    125. }
    126. },
    127. mode: 'default', // or 'simple'
    128. }
    129. },
    130. created() {
    131. if(this.html) {
    132. this.html = decodeURIComponent(this.html)
    133. }
    134. },
    135. methods:{
    136. onCreated(editor) {
    137. this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错
    138. },
    139. beforeDestroy() {
    140. const editor = this.editor
    141. if (editor == null) return
    142. editor.destroy() // 组件销毁时,及时销毁编辑器
    143. }
    144. }
    145. }
    146. script>
    147. <style src="@wangeditor/editor/dist/css/style.css">style>

     3.2、使用组件editor.vue

    1. <script>
    2. import Editor from '@/components/editor'
    3. export default {
    4. components: { Editor },
    5. data() {
    6. return {
    7. html: ''
    8. }
    9. }
    10. }
    11. script>
  • 相关阅读:
    centos7安装字体和中文字体
    web前端期末大作业 html+css古诗词主题网页设计
    黑马瑞吉外卖之新增菜品
    【数据库】将excel数据导入mysql数据库
    .Net6 Api Swagger配置
    在mybatis-plus项目中自带要编写sql语句,@select注解的使用
    【Docker】联合探讨Docker:容器化技术的革命性应用
    【微软】【ICLR 2022】TAPEX:通过学习神经 SQL 执行器进行表预训练
    Word目录中自动添加自定义样式的多级标题的方法
    【C++】运算符重载 ⑨ ( 等号 = 运算符重载 | 调用默认浅拷贝构造函数的情况分析 | 等号 = 运算符重载 与 拷贝构造函数 各自使用场景 | 等号 = 操作符重载步骤 )
  • 原文地址:https://blog.csdn.net/u012804440/article/details/134473184