网站首页lua/js

vue3项目引入ueditor-plus富文本编辑器

发布时间:2024-11-26 23:34:33编辑:阅读(152)

    1. 下载ueditor-plus项目到本地

    项目地址:   https://gitee.com/modstart-lib/ueditor-plus

    将其中的dist目录, 复制到vue项目的public目录下.并重命名为UEditorPlus.


    2. 在命令行下安装vue-ueditor-wrap插件

    npm i vue-ueditor-wrap@3.x -S


    3. 在main.js里引入vue-ueditor-wrap

    import {createApp} from 'vue'
    import App from './App.vue'
    import VueUeditorWrap from 'vue-ueditor-wrap';
     
    createApp(App).use(VueUeditorWrap).mount('#app')


    4. 在页面里引入vue-ueditor-wrap组件, 具体的配置项可查阅ueditor-plus文档

    https://open-doc.modstart.com/ueditor-plus/manual.html


    <template>
        <div>
            <vue-ueditor-wrap v-model="content"
                              :config="editorConfig"
                              :editorDependencies="['ueditor.config.js','ueditor.all.js']" />
        </div>
    </template>
     
    <script setup>
        import {ref} from 'vue'; 
        const content = ref('<p>Hello UEditorPlus</p>');
        const editorConfig=ref({
          // 编辑器不自动被内容撑高
          autoHeightEnabled: false,
          // 不显示元素路径
          elementPathEnabled: false,      
          // 初始容器高度
          initialFrameHeight: 500,
          // 最大字数限制
          maximumWords: 10000,
          // 编辑器z-index防遮挡, 特别是在elementUi的弹窗里显示时,这个值必须够大.
          zIndex: 2060,
          // 初始容器宽度
          initialFrameWidth: '100%',      
          // 是否从服务器加载配置
          loadConfigFromServer: true,
          // 服务器加载配置的路径
          serverUrl: 'https://website/index/ueditor',
    
          UEDITOR_HOME_URL: '/UEditorPlus/',
          UEDITOR_CORS_URL: '/UEditorPlus/',
          // 工具栏配置
          toolbars: [
          [
              "fullscreen",   // 全屏
              "source",       // 源代码
              "|",
              "undo",         // 撤销
              "redo",         // 重做
              "|",
              "bold",         // 加粗
              "italic",       // 斜体
              "underline",    // 下划线
              "fontborder",   // 字符边框
              "strikethrough",// 删除线
              "removeformat", // 清除格式
              "formatmatch",  // 格式刷
              "pasteplain",   // 纯文本粘贴模式
              "|",
              "forecolor",    // 字体颜色
              "backcolor",    // 背景色          
              "|",          
              "lineheight",          // 行间距
              "|",
              "customstyle",         // 自定义标题
              "paragraph",           // 段落格式
              "fontfamily",          // 字体
              "fontsize",            // 字号
              "|",          
              "indent",              // 首行缩进
              "|",
              "justifyleft",         // 居左对齐
              "justifycenter",       // 居中对齐
              "justifyright",
              "justifyjustify",      // 两端对齐
              "|",          
              "link",                // 超链接
              "unlink",              // 取消链接
              "anchor",              // 锚点
              "|",
              "imagenone",           // 图片默认
              "imageleft",           // 图片左浮动
              "imageright",          // 图片右浮动
              "imagecenter",         // 图片居中
              "|",
              "simpleupload",        // 单图上传
              "insertimage",         // 多图上传
            ]
          ],
          // 服务器请求携带的头信息
          serverHeaders: {
            'Authorization': `Bearer tokens`,
          },      
    });
    </script>


    5. 处理服务器配置

    serverUrl: 'https://website/index/ueditor'

    这里有个坑, 直接给serverUrl加的这个http远程地址的配置, 会返回报错, 无法使用http地址.

    此时只需打开UEditorPlus下面的ueditor.all.js文件,

    搜索到:   isJsonp=utils.isCrossDomainUrl(configUrl);

    更改为:    isJsonp=false;

    保存上传即可.


    然后将服务器上的serverUrl接口的返回内容处理为下面的json段:

    {
                "imageActionName": "imageUpload",
                "imageFieldName": "file",
                "imageMaxSize": 10485760,
                "imageAllowFiles": [
                        ".jpg",
                        ".png",
                        ".jpeg"
                    ],
                "imageCompressEnable": true,
                "imageCompressBorder": 5000,
                "imageInsertAlign": "none",
                "imageUrlPrefix": "",            
                "imageManagerActionName": "listImage",
                "imageManagerListSize": 20,
                "imageManagerUrlPrefix": "",
                "imageManagerInsertAlign": "none",
                "imageManagerAllowFiles": [
                        ".jpg",
                        ".png",
                        ".jpeg"
                ]
    }

    6. 处理图片上传, 可以和上边返回配置信息的接口合并, 代码如下所示:


    public function ueditor(){
            $action = $this->input('action');
            switch($action){
                case 'config':
                    $result = <<<EOF
            {
                "imageActionName": "image",
                "imageFieldName": "file",
                "imageMaxSize": 10485760,
                "imageAllowFiles": [
                        ".jpg",
                        ".png",
                        ".jpeg"
                    ],
                "imageCompressEnable": true,
                "imageCompressBorder": 5000,
                "imageInsertAlign": "none",
                "imageUrlPrefix": "",            
                "imageManagerActionName": "listImage",
                "imageManagerListSize": 20,
                "imageManagerUrlPrefix": "",
                "imageManagerInsertAlign": "none",
                "imageManagerAllowFiles": [
                        ".jpg",
                        ".png",
                        ".jpeg"
                ]
            }
    EOF;
                    break;
                case 'imageUpload':
                    if ($file   = $this->getFiles('file')){
                        $res['state'] = 'SUCCESS';
                        $res['url']   = cdn::upload($file);
                        $result = json_encode($res);
                    }
                    break;
            }
            echo $result;
        }


    完结.

评论