0.2.4 • Published 4 years ago

xyue-editor v0.2.4

Weekly downloads
17
License
-
Repository
-
Last release
4 years ago

xyue-editor - 富文本编辑器

安装

npm i xyue-editor

编辑器使用

一般在后台使用

<editor v-model="content"
        :onChooseImg="uploadImg"
        :onChooseVideo="uploadVideo"
        :onChooseVideoPoster="uploadImg"
></editor>
import { editor } from 'xyue-editor'
export default {
  components: { editor },
  data () {
    return {
      content: ''
    }
  },
  methods: {
    uploadImg (files) {
      const upload = f => new Promise((resolve, reject) => {
        let form = new window.FormData()
        form.append('collection', 'javaweb')
        form.append('file', f)
        this.$api.common.uploadImg(form).then(res => {
          if (res.code === 0) {
            resolve(res.data.filePath)
          } else {
            this.$message.error(res.userMsg)
            reject(new Error(res.userMsg))
          }
        }, e => {
          this.$message.error(e)
          reject(e)
        })
      })
      return new Promise(async (resolve, reject) => {
        this.$indicator.open()
        try {
          const data = []
          for (let i = 0; i < files.length; i++) {
            data.push(await upload(files[i]))
          }
          resolve(data.join('|'))
        } catch (e) {
          reject(e)
        }
        this.$indicator.close()
      })
    },
    uploadVideo (files) {
      let p = Array.from(files).map(f => {
        return new Promise((resolve, reject) => {
          let form = new window.FormData()
          form.append('collection', 'javaweb')
          form.append('file', f)
          this.$api.common.uploadImg(form).then(res => {
            if (res.code === 0) {
              resolve(res.data.filePath)
            } else {
              this.$message.error(res.userMsg)
              reject(new Error(res.userMsg))
            }
          }, e => {
            this.$message.error(e)
            reject(e)
          })
        })
      })
      return new Promise((resolve, reject) => {
        this.$indicator.open()
        Promise.all(p).then(res => {
          resolve(res.join('|'))
        }).finally(() => {
          this.$indicator.close()
        })
      })
    }
  }
}

渲染器使用

前台使用

<viewer :content="content"></viewer>
import { viewer } from 'xyue-editor'

export default {
  components: { viewer },
  data () {
    return {
      content: ''
    }
  },
  mounted () {
    this.$nextTick(() => {
      // 可以在这里操作html
    })
  },
  methods: {
  }
}

API

1. editor props

value(v-model)

编辑器里的内容

editable

bool 编辑器是否可以编辑

pcWidth

Number PC端的宽度,单位px,默认640。注意,这个不宜给太大,要考虑用户浏览的体验!一般使用默认值640就行

basicFontSize

Number 基础字体大小,富文本里所有的字体大小都基于这个,默认为16,为了浏览体验,一般也不用改他

colors

编辑器可选的颜色, Array 默认:'#f21c1c', '#1890ff', '#fd9712', '#2ac57f', '#bea68d', '#9c9c9c'

onChooseImg

Function 选择完图片触发,你需要return一个promise,并在这里执行你的上传操作,最后把图片的服务器路径resolve出来

onChooseVideo

Function 选择完视频触发,与图片一致

onChooseVideoPoster

Function 选择完视频封面触发,与上面一致

2. viewer props

content

要渲染的富文本内容

pcWidth

Number PC端的宽度,单位px,默认640。注意,这个不宜给太大,要考虑用户浏览的体验!一般使用默认值640就行

basicFontSize

Number 基础字体大小,富文本里所有的字体大小都基于这个,默认为16,为了浏览体验,一般也不用改他