如何使用ssr在nuxt中添加ckeditor插件

时间:2019-05-05 12:10:42

标签: nuxt.js nuxt ckeditor5

我正在尝试在通用(SSR)的nuxt应用中添加ckeditor 5的Alignment插件

我在插件中尝试过这样


import Vue from 'vue'
import ClassicEditor from '@ckeditor/ckeditor5-build-classic'
import VueCkeditor from 'vue-ckeditor5'

// import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment'; <-- not working


const options = {

    editors: {
        classic: ClassicEditor,

    },
    name: 'ckeditor'
}

Vue.use(VueCkeditor.plugin, options);

我也尝试过直接导入到这样的页面

import Alignment from '@ckeditor/ckeditor5-alignment/src/alignment';

获取错误

  

意外的标识符

普通editorConfig运行正常

editorConfig: {

      image: {

        toolbar: ['imageTextAlternative', '|', 'imageStyle:alignLeft', 'imageStyle:full', 'imageStyle:alignRight'],

                styles: [

                'full',


               'alignLeft',


               'alignRight'
           ]
         },
         alignment: {
           options: [ 'left', 'right' ]
         },
         toolbar: {
           items: [
            'heading',
            'bold',
            'italic',
            'link',
            'bulletedList',
            'numberedList',
            'blockQuote',
            'insertTable',
            'imageUpload',
            'mediaEmbed',
            'alignment'
          ]
       }
    },

2 个答案:

答案 0 :(得分:0)

我终于找到了

最好的选择,而不是制作自己的自定义构建npm包并像使用它一样

答案 1 :(得分:0)

您只能在客户端上导入/渲染CKEditor,方法是使用仅包含在客户端上的插件(仅注册用于编辑器的组件)的解决方法

nuxt.config

plugins: [
  { src: '~/plugins/rich-editor', ssr: false },
],

ssr = false使得插件不包含在服务器端版本中

plugins / rich-editor.js

import Vue from 'vue'
import RichEditor from '@/components/RichEditor'

// register component from plugin to bypass SSR
Vue.component('rich-editor', RichEditor)

最后在RichEditor包装器中导入CKEditor。

RichEditor.js

import CKEditor from '@ckeditor/ckeditor5-vue';

在服务器端将为空div,在客户端将其呈现为CKEditor。

或者,您可以在插件中注册。