概要
Nuxt は基本 SSR しているためブラウザのdocument
オブジェクトなどが読み込めず、一部ライブラリが使えない。
例えば medium-editor はdocument
オブジェクトを参照しているため、なんとかして使えるようにする必要がある。
この記事ではその方法を解説する。
解説
.vue
ファイル内の script タグ内で、process.browser
を呼び出すとブラウザ環境かどうか bool 値で返ってくる。
これが true のときに、document
オブジェクトを呼び出すようなライブラリを呼び出す。
例:
const MediumEditor = process.browser ? require('medium-editor') : ''
その後、Vueインスタンスがマウントした後のタイミングなどで読み込んだライブラリを実行する。
例:
<template>
<div ref="editable" />
</template>
<script>
const MediumEditor = process.browser ? require('medium-editor') : ''
export default {
// 省略
mounted() {
this.initEditor()
},
methods: {
initEditor() {
const elements = this.$refs.editable
new MediumEditor(elements, {
spellcheck: false
})
}
}
}
</script>
参考
- ripe-thumbの VueEditor.vue