IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue使用富文本插件 vue-tinymce(tinymce) -> 正文阅读

[JavaScript知识库]vue使用富文本插件 vue-tinymce(tinymce)

富文本组件: vue-tinymce 配置教程

1、package.json 添加依赖及对应版本

dependencies 依赖管理下添加

"tinymce": "^5.6.0",
"@packy-tang/vue-tinymce": "^1.0.0",

加好了 npm install 一下

2、拷贝源文件至public 目录

在这里插入图片描述

3、vue-tinymce 组件进行二次封装

在 src/components/ 下创建 vue-tinymce/index.vue 组件 (对vue-tinymce进行二次封装)

<template>
    <div id="vue-tinymce">
        <vue-tinymce
                v-model="editorVlaue"
                :setting="setting"/>
    </div>
</template>

<script>
    import {baseUploadUrl} from "@/config/env";

    export default {
        name: 'vueTinymceEditor',
        data() {
            return {
                editorVlaue: this.content != null ? this.content : "",
                setting: {
                    menubar: true,  // 菜单栏
                    //inline: true,   //开启内联模式
                    readonly: false, // 只读
                    toolbar:
                        "undo redo | fullscreen | formatselect alignleft aligncenter alignright alignjustify | link unlink | numlist bullist | image media table emoticons | fontselect fontsizeselect forecolor backcolor | bold italic underline strikethrough | indent outdent | superscript subscript | removeformat | wordcount code",
                    toolbar_drawer: "sliding",
                    quickbars_selection_toolbar: "removeformat | bold italic underline strikethrough | fontsizeselect forecolor backcolor",
                    plugins: "link image media table lists fullscreen quickbars wordcount paste emoticons code",
                    language: 'zh_CN',
                    height: 350,
                    // 图片上传地址(自动上传)
                    // images_upload_url: baseUploadUrl + 'image/vueTinymce/',
                    // 允许粘贴图片上传,及格式
                    paste_data_images: true,
                    images_file_types: 'jpeg,jpg,png,gif,bmp,webp',
                    // 此处为图片上传处理函数 (手动上传)
                    images_upload_handler: (blobInfo, success, failure, progress) => {
                        console.log('上传处理器:')
                        // 方法1:用base64的图片形式上传图片
                        // const img = 'data:image/jpeg;base64,' + blobInfo.base64()
                        // success(img)

                        // 方法2:上传oos
                        const xhr = new XMLHttpRequest()
                        xhr.withCredentials = false
                        xhr.open('POST', baseUploadUrl + 'image/vueTinymce/')
                        // xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=utf-8')
                        // xhr.setRequestHeader('x-token', this.$store.getters.token)
                        xhr.upload.onprogress = function (e) {
                            progress(e.loaded / e.total * 100)
                        }
                        // 成功结果
                        xhr.onload = function () {
                            if (xhr.status != 200) {
                                failure('HTTP Error: ' + xhr.status, {remove: true})
                                return
                            }
                            const json = JSON.parse(xhr.responseText)
                            success(json.data.url);
                        }
                        // 失败结果
                        xhr.onerror = function () {
                            failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status)
                        }
                        // 请求数据
                        const formData = new FormData()
                        formData.append('file', blobInfo.blob(), blobInfo.filename())
                        xhr.send(formData)
                    },
                }
            }
        },
        props: {
            // 接收值父组件传递值
            content: String
        }
        ,
        watch: {
            editorVlaue: function (newNum, oldNum) {
                // 修改调用者传入的值
                this.$emit('update:content', newNum)
            }
        }
    }
</script>

<style>
    /* 富文本按钮功能优先级,最好 > 2500  弹出默认2000+ */
    .tox-tinymce-aux {
        z-index: 9999 !important;
    }


</style>

4、 main.js 配置

   /* 富文本*/
   import tinymce from 'tinymce'
   import VueTinymce from '@packy-tang/vue-tinymce'
   Vue.prototype.$tinymce = tinymce;
   Vue.use(VueTinymce);
   /* 二次封装  */
   import vueTinymceEditor from '@/components/vue-tinymce/index';
   Vue.component('TinymceEditor', vueTinymceEditor);

5、public / index.html 增加

 <script src="/tinymce/tinymce.min.js"></script>

6、任意页面使用 (调用当前页面子组件)

  • content.sync 为我们自己定义的组件接收参数,sync 表示组件中可以修改我们绑定的值
  • obj.content 为绑定的值
  • v-if 表示有值在加载组件,防止还没获取到接口数据就加载了组件导致无法回显内容
<TinymceEditor v-if="obj.content" :content.sync="obj.content"/>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:32:01  更:2022-05-18 17:32:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:12:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码