JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q64409F
  • License MIT

A Vue 2 TinyMCE editor component compatible with Element UI

Package Exports

  • atfx-tinymce
  • atfx-tinymce/src/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (atfx-tinymce) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ATFX-TinyMCE

安装

npm install atfx-tinymce --save

基本使用

<template>
  <div>
    <Tinymce v-model="content" />
  </div>
</template>

<script>
import { Tinymce } from 'atfx-tinymce'

export default {
  components: {
    Tinymce
  },
  data() {
    return {
      content: '<p>Hello World!</p>'
    }
  }
}
</script>

完整配置示例

<template>
  <div>
    <Tinymce
      v-model="content"
      :height="500"
      :width="800"
      language="cn"
      :limit="10"
      :custom-upload-url="uploadUrl"
      :review-file-url="reviewUrl"
      :custom-headers="headers"
      upload-dialog-title="上传文件"
      upload-dialog-text="单击或将文件拖到此处上传(支持jpg、jpeg、png、gif、pdf格式)"
      @update:uploadFileSuccess="handleUploadSuccess"
      @update:uploadFileError="handleUploadError"
      @update:imageReview="handleImageReview"
    />
  </div>
</template>

<script>
import { Tinymce } from 'atfx-tinymce'

export default {
  components: {
    Tinymce
  },
  data() {
    return {
      content: '',
      uploadUrl: '/api/upload',
      reviewUrl: '/api/files',
      headers: {
        Authorization: 'Bearer token'
      },
    }
  },
  methods: {
    handleUploadSuccess(fileList, fileUrl) {
      console.log('上传成功', fileList, fileUrl)
    },
    handleUploadError(error) {
      console.error('上传失败', error)
    },
    handleImageReview(imageUrl, imageContainer) {
      console.log('查看图片', imageUrl)
      // 可以在这里实现自定义的图片预览功能
    }
  }
}
</script>

属性

属性名 类型 默认值 描述
id String 自动生成 编辑器的唯一ID
value / v-model String '' 编辑器内容
toolbar Array [] 自定义工具栏,为空则使用默认工具栏
menubar String '' 菜单栏配置
options Object {} 额外的TinyMCE初始化选项
height Number/String 360 编辑器高度
width Number/String 'auto' 编辑器宽度
language String 'us' 编辑器语言,支持多种语言
limit Number 5 文件上传数量限制
customUploadUrl String '' 文件上传接口URL
reviewFileUrl String '' 文件预览基础URL
customHeaders Object {} 上传文件的请求头
uploadDialogTitle String '上传文件' 上传对话框标题
uploadDialogText String '单击或将文件拖到此处上传...' 上传对话框提示文本
uploadFileRequest Function () => {} 自定义文件上传方法

事件

事件名 参数 描述
input content 编辑器内容更新时触发
update:uploadFileSuccess fileList, fileUrl 文件上传成功时触发
update:uploadFileError error 文件上传失败时触发
update:imageReview imageUrl, imageContainer 点击图片时触发

方法

方法名 参数 描述
setContent value 设置编辑器内容
getContent - 获取编辑器内容
getEditor - 获取原始TinyMCE编辑器实例

文件上传功能

组件内置了强大的文件上传功能:

支持的文件类型

  • 图片:jpg, jpeg, png, gif
  • 文档:pdf

文件处理

  • 默认文件大小限制为10MB
  • 图片自动插入到编辑器中并显示预览
  • PDF文件以链接+图标形式插入,点击可在新窗口打开
  • 支持拖拽上传和点击上传
  • 支持直接粘贴图片自动上传

上传接口要求

上传接口需要返回以下格式的数据:

{
  "code": 1004,  // 成功状态码
  "data": "filename.jpg"  // 文件名
}

多语言支持

组件支持多种语言,通过language属性设置:

代码 语言
cn 简体中文
hk 繁体中文
us 英语(美国)
ar 阿拉伯语
ur 乌尔都语
id 印尼语
jp 日语
ko 韩语
ms 马来语
th 泰语
vn 越南语
ru 俄语
my 马来语
hi 印地语

自定义样式

组件预设了基本样式,同时支持自定义:

/* 自定义编辑器容器样式 */
.tinymce-container {
  border: 1px solid #dcdfe6;
  border-radius: 4px;
}

/* 自定义编辑器内容样式 */
.tinymce-body {
  font-family: 'Arial', sans-serif;
  font-size: 14px;
}

/* 自定义PDF预览样式 */
.pdf-container {
  background-color: #f5f7fa;
  padding: 10px;
  border-radius: 4px;
}

环境要求

  • Vue 2.x
  • Element UI(用于上传对话框)

常见问题

文件上传失败

  • 检查customUploadUrl是否正确配置
  • 确认服务器接口返回格式是否符合要求
  • 验证customHeaders是否包含必要的认证信息

编辑器无法显示

  • 检查容器宽高设置
  • 确认TinyMCE初始化是否成功