Nuxt.js中的鹅毛笔模块

时间:2020-04-04 22:01:47

标签: javascript vue.js nuxt.js quill

在过去的大部分时间里,我一直试图在我的Nuxt.js项目中添加Quill.js,这使我发疯。

我安装了vue-quill-editor,并按照指定的步骤进行操作,以便通过Nuxt提供服务。当然可以,它起作用了!

然后我尝试添加自定义模块,而我尝试过的一切都失败了。

即使Quill's documentation中的“示例”也不起作用。它会引发ModuleClass is not a constructor错误。

以下是一些示例代码: nuxt-quill-plugin.js

import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor'
import Quill from 'quill'
import Counter from './counter'

uill.register('modules/Counter', Counter);
Vue.use(VueQuillEditor)

counter.js(与我上面链接的示例相同):


class Counter {
  constructor(quill, options) {
    this.quill = quill;
    this.options = options;
    this.container = document.querySelector(options.container);

    quill.on('text-change', this.update.bind(this));
    this.update();  // Account for initial contents

  }

  calculate() {
    let text = this.quill.getText();
    if (this.options.unit === 'word') {
      text = text.trim();
      // Splitting empty text returns a non-empty array
      return text.length > 0 ? text.split(/\s+/).length : 0;
    } else {
      return text.length;
    }
  }

  update() {
    console.log("update")
    var length = this.calculate();
    var label = this.options.unit;
    if (length !== 1) {
      label += 's';
    }
    this.container.innerText = length + ' ' + label;
  }
}

editor.vue(使用组件的位置):

<template>
  <section class="container">
    <client-only>
      <quill-editor
        :options="editorOption"
        @blur="onEditorBlur($event)"
        @focus="onEditorFocus($event)"
        @ready="onEditorReady($event)"
        ref="editor"
        v-model="content"
      />
      <div id="counter">0</div>

    </client-only>
  </section>
</template>

<script>
  export default {
    name: 'editor',
    components:{},
    data() {
      return {
        content: `
         <p>Example text</p>
        `,
        editorOption: {
          // Some Quill options...
          theme: 'snow',
          modules: {
            Counter: true
          }
        }
      }
    },
    methods: {
      onEditorBlur(editor) {
        console.log('editor blur!', editor)
      },
      onEditorFocus(editor) {
        console.log('editor focus!', editor)
      },
      onEditorReady(editor) {
        console.log('editor ready!', editor)
      }
    }
  }
</script>

对于它的价值,我还将nuxt.config.js中的插件设置为ssr:false

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

<块引用>

nuxt-quill-plugin.js

import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor'

Vue.use(VueQuillEditor)
<块引用>

nuxt.config.js

import webpack from 'webpack'
export default {

build: {
        plugins: [
        new webpack.ProvidePlugin({
            'window.Quill': 'quill/dist/quill.js',
            'Quill': 'quill/dist/quill.js'
        }),
        ]
      }
}
<块引用>

page.vue

<template>
    <div>
<quill-editor
    v-model="content"
    :options="editorOption"
    />
</div>
</template>

<script>

import Editor from '~/components/Editor' 
export default {
data() {
return {
content: '<p>I am Example</p>',
editorOption: {
            // Some Quill options...
            theme: 'snow',
            modules: {
                    toolbar: [
                        ['bold', 'italic', 'underline', 'strike'],
                        ['blockquote', 'code-block']
                    ]
                }
            }
}
}
}
</script>