最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Vue2.X 安装CKEditor5 以及基本使用

    正文概述 掘金(hinotoyk)   2020-12-28   432

    一.安装环境

    1. vue 2.6.11
    2. vue/cli 3.6.0(使用源码集成手脚架必须要3.x及以上版本)

    二.使用官网的集成方案快速安装(以Classic为例)

    1. 快速安装

    官网文档Vue2.x Quick start文档

    npm install --save @ckeditor/ckeditor5-vue2 @ckeditor/ckeditor5-build-classic
    npm install --save @ckeditor/ckeditor5-adapter-ckfinder
    
    1. 引入项目

    Vue2.X 安装CKEditor5 以及基本使用 官网推荐是全局引入,但是个人还是更加推荐局部引入吧,毕竟富文本编辑器只是在一两个页面上使用

    1. 在components目录下创建一个ykeditor.vue
    <template>
      <div id="ykEditor">
        <ckeditor id="ckeditor" 
        :editor="editor" 
        v-model="editorData" 
        :config="editorConfig"></ckeditor>
      </div>
    </template>
    
    <script>
    import ClassicEditor from '@ckeditor/ckeditor5-build-classic'
    import CKEditor from '@ckeditor/ckeditor5-vue2'
    import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn'
    
    export default {
      name: 'ClassicEditor',
    
      components: {
        //局部注册方式
        ckeditor: CKEditor.component
      },
    
      props: {
        content: {
          type: String,
          default: ''
        },
        placeholder: {
          type: String,
          default: '请输入内容'
        }
      },
    
    
      data() {
        return {
          // Use the <ckeditor> component in this view.
          editor: ClassicEditor,
          editorData: this.content,
          editorConfig: {
            placeholder: this.placeholder,
            language: 'zh-cn',
            //该方式本人没有使用过,使用ckfinder上传时要注意返回的格式
            //应该是{"uploaded":1,"url":"/"}
            //或者{"uploaded":true,"url":"/"}
            ckfinder: {
              uploadUrl: '/'
            }
          },
        }
      },
    
    
      methods: {
    
        getContent(){
          return this.editorData
        },
    
        setContent(val){
          this.editorData = val
        },
      },
    
    }
    </script>
    
    <style>
    .ck-editor__editable {
      min-height: 400px;
    }
    </style>
    
    
    
    1. 使用
    <template>
      <div id="app">
        <yk-editor ref="editorRef"></yk-editor>
        <button @click="setContent">设置内容</button>
        <button @click="getContent">获取内容</button>
      </div>
    </template>
    
    <script>
      import ykEditor from "@/components/ykeditor";
    
      export default {
        name: 'ClassicEditor',
    
        components: {
          ykEditor
        },
    
        data() {
          return {
    
          }
        },
    
        methods: {
          setContent(){
            this.$refs.editorRef.setContent("<h1>这是ykEditor</h1>")
          },
    
          getContent(){
            console.log(this.$refs.editorRef.getContent())
          }
        }
    
      }
    
    </script>
    

    效果图 Vue2.X 安装CKEditor5 以及基本使用

    该有的功能基本都有了

    三.自定义安装(相对)

    这里的自定义只是控制classic的集成方案中的有的功能 打印了一下大概有CKFinderUploadAdapter,Autoformat,Bold,Italic,BlockQuote,CKFinder,EasyImage,Heading,Image,ImageCaption,ImageStyle,ImageToolbar,ImageUpload,Indent,Link,List,MediaEmbed,Paragraph,PasteFromOffice,Table,TableToolbarTextTransformation这一些

    1. 添加一个static目录,新建uploadImageAdapter.js
    export default class uploadImageAdapter {
        constructor(loader) {
            this.loader = loader
        }
    
        async upload() {
            //获取到用户上传的文件
            const image = await this.loader.file;
            const formData = new FormData();
    
            formData.append('file', image)
            /***
             * axios实现上传逻辑
             *
             */
    
            //返回的结果格式化一下,把url传到下面的json中
            let resultJson = {"uploaded":1,"url":"/"}
    
            return resultJson
        }
        
        abort() {
            
        }
    }
    
    1. 创建一个自定义(相对)的classicEditor
    <template>
      <div>
        <!-- 工具栏容器 -->
        <div id="toolbar-container"></div>
        <!-- 编辑器容器 -->
        <div id="ykEditor"></div>
      </div>
    </template>
    
    <script>
    
    import ClassicEditor from '@ckeditor/ckeditor5-build-classic'
    import '@ckeditor/ckeditor5-build-classic/build/translations/zh-cn'
    import uploadImageAdapter from "@/static/uploadImageAdapter";
    
    export default {
      name: 'ClassicEditor',
    
      props: {
        content: {
          type: String,
          default: ''
        }
      },
    
      data() {
        return {
          editor: null,
        }
      },
    
      mounted() {
        this.initEditor()
      },
    
      methods: {
        initEditor() {
          ClassicEditor.create(document.querySelector('#ykEditor'), {
            language: 'zh-cn',
            toolbar: [
              'heading',
              '|',
              'bold',
              'italic',
              'Link',
              'bulletedList',
              'numberedList',
              '|',
              'imageUpload',
              'blockQuote',
              '|',
              'undo', //撤销
              'redo',//重做
            ],
          }).then(editor => {
            const toolbarContainer = document.querySelector('#toolbar-container');
            toolbarContainer.appendChild(editor.ui.view.toolbar.element);
            //正式初始化编辑器
            this.editor = editor
    
            //使用图片上传适配器
            editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {
              return new uploadImageAdapter(loader)
            };
    
            //监听数据变化
            editor.model.document.on('change:data', () => {
              this.content = editor.getData();
            });
    
          }).catch(e => {
            console.log(e)
          });
        },
    
        getContent() {
          return this.content
        },
    
        setContent(val) {
          this.editor.setData(val)
        },
      }
    
    }
    </script>
    
    <style>
    .ck-editor__editable {
      min-height: 400px;
    }
    </style>
    
    
    1. 其中toolbar那里可以选择classic集成方案中的功能,也就是第三点开头的那些,只不过如果是这种安装方法,它会有引用这么一个东西,但是实际未必会有,所以添加之后看控制台的信息,如果提示没有的话,再逐一安装

    2. 还有一个比较坑爹的问题,如果是使用这样的集成方案,哪怕自定义也是只能定义集成方案中已有的功能,如果是继承方案中没有的功能,比如ImageReset这些...好像是没有办法再添加。


    起源地下载网 » Vue2.X 安装CKEditor5 以及基本使用

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元