vue3整合UEditor编辑器
下载地址:https://github.com/fex-team/ueditor
可以选择release最近的一个版本,1.4.3
文档:http://fex.baidu.com/ueditor/#start-toolbar
推荐:https://hc199421.gitee.io/vue-ueditor-wrap/#/home
1、main.js全局注册,单个组件内注册不生效,原因未知:
JavaScript Code复制内容到剪贴板
- import VueUeditorWrap from 'vue-ueditor-wrap'
- const app = createApp(App);
- //...
- app.use(VueUeditorWrap);
2、将下载好的文件放入public目录下,命名为UEditor
这里我有一些调整,比如隐藏了查看在线图片,修改了css,由于和vue3的UI框架有样式冲突,调整了一下
由于一些沟通问题,config我写死在JS里面,可以恢复原来的ueditor.all.min.js
3、页面引入
JavaScript Code复制内容到剪贴板
- <ueditor v-model="form.content" placeholder="文章内容不能为空" :height="400"></ueditor>
组件内容:
XML/HTML Code复制内容到剪贴板
- <template>
- <div class="sceditor">
- <vue-ueditor-wrap v-model="contentValue" :config="editorConfig" editor-id="editor-01"></vue-ueditor-wrap>
- </div>
- </template>
- <script>
- import API from "@/api";
- import config from '@/config'
- export default {
- props: {
- modelValue: {
- type: String,
- default: ""
- },
- placeholder: {
- type: String,
- default: ""
- }
- },
- data() {
- return {
- editorConfig: {
- UEDITOR_HOME_URL: `UEditor/`, // 访问 UEditor 静态资源的根路径
- themePath: "/UEditor/themes/",
- theme: 'default',
- serverUrl: API.common.ueditor.url, // 接口请求地址
- autoHeight: true, // 高度自动撑高
- initialFrameWidth: 1200, // 初始化编辑器宽度,默认1000
- initialFrameHeight: 400, // 初始化编辑器高度,默认320
- toolbars: [
- [
- 'source', '|', 'undo', 'redo', '|',
- 'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'pasteplain', 'autotypeset', 'blockquote', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|', 'rowspacingtop', 'rowspacingbottom', 'lineheight',
- 'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|','directionalityltr', 'directionalityrtl', 'indent', '|', 'justifyleft', 'justifyright', 'justifycenter', 'justifyjustify', 'touppercase', 'tolowercase', 'link', 'unlink', 'anchor',
- // 'simpleupload',
- 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
- 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'template', 'background', '|',
- 'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage',
- 'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|', 'print', 'preview', 'searchreplace', 'drafts', 'help'
- ],
- ]
- // toolbars: [
- // [
- // 'anchor', //锚点
- // 'undo', //撤销
- // 'redo', //重做
- // 'bold', //加粗
- // 'indent', //首行缩进
- // 'snapscreen', //截图
- // 'italic', //斜体
- // 'underline', //下划线
- // 'strikethrough', //删除线
- // 'subscript', //下标
- // 'fontborder', //字符边框
- // 'superscript', //上标
- // 'formatmatch', //格式刷
- // 'source', //源代码
- // 'blockquote', //引用
- // 'pasteplain', //纯文本粘贴模式
- // 'selectall', //全选
- // 'print', //打印
- // 'preview', //预览
- // 'horizontal', //分隔线
- // 'removeformat', //清除格式
- // 'time', //时间
- // 'date', //日期
- // 'unlink', //取消链接
- // 'insertrow', //前插入行
- // 'insertcol', //前插入列
- // 'mergeright', //右合并单元格
- // 'mergedown', //下合并单元格
- // 'deleterow', //删除行
- // 'deletecol', //删除列
- // 'splittorows', //拆分成行
- // 'splittocols', //拆分成列
- // 'splittocells', //完全拆分单元格
- // 'deletecaption', //删除表格标题
- // 'inserttitle', //插入标题
- // 'mergecells', //合并多个单元格
- // 'deletetable', //删除表格
- // 'cleardoc', //清空文档
- // 'insertparagraphbeforetable', //"表格前插入行"
- // 'insertcode', //代码语言
- // 'fontfamily', //字体
- // 'fontsize', //字号
- // 'paragraph', //段落格式
- // 'simpleupload', //单图上传
- // 'insertimage', //多图上传
- // 'edittable', //表格属性
- // 'edittd', //单元格属性
- // 'link', //超链接
- // 'emotion', //表情
- // 'spechars', //特殊字符
- // 'searchreplace', //查询替换
- // 'map', //Baidu地图
- // 'gmap', //Google地图
- // 'insertvideo', //视频
- // 'help', //帮助
- // 'justifyleft', //居左对齐
- // 'justifyright', //居右对齐
- // 'justifycenter', //居中对齐
- // 'justifyjustify', //两端对齐
- // 'forecolor', //字体颜色
- // 'backcolor', //背景色
- // 'insertorderedlist', //有序列表
- // 'insertunorderedlist', //无序列表
- // 'fullscreen', //全屏
- // 'directionalityltr', //从左向右输入
- // 'directionalityrtl', //从右向左输入
- // 'rowspacingtop', //段前距
- // 'rowspacingbottom', //段后距
- // 'pagebreak', //分页
- // 'insertframe', //插入Iframe
- // 'imagenone', //默认
- // 'imageleft', //左浮动
- // 'imageright', //右浮动
- // 'attachment', //附件
- // 'imagecenter', //居中
- // 'wordimage', //图片转存
- // 'lineheight', //行间距
- // 'edittip ', //编辑提示
- // 'customstyle', //自定义标题
- // 'autotypeset', //自动排版
- // 'webapp', //百度应用
- // 'touppercase', //字母大写
- // 'tolowercase', //字母小写
- // 'background', //背景
- // 'template', //模板
- // 'scrawl', //涂鸦
- // 'music', //音乐
- // 'inserttable', //插入表格
- // 'drafts', // 从草稿箱加载
- // 'charts', // 图表
- // ]
- // ]
- },
- contentValue: this.modelValue
- }
- },
- watch: {
- modelValue(val) {
- this.contentValue = val
- },
- contentValue(val){
- this.$emit('update:modelValue', val);
- }
- },
- mounted() {
- // console.log(path.join(__dirname, 'public'))
- if(process.env.NODE_ENV === 'development') {
- this.editorConfig.editorConfig = 'UEditor/'
- this.editorConfig.themePath = '/admin/UEditor/themes/' // 如果根目录则是/UEditor/themes
- }else{
- this.editorConfig.editorConfig = config.SITE_URL + 'admin/UEditor/'
- this.editorConfig.themePath = config.SITE_URL + 'admin/UEditor/themes/'
- }
- },
- methods: {
- }
- }
- </script>
- <style>
- </style>
效果图预览: