vue引入ueditor及node后台配置详解


Posted in Javascript onJanuary 03, 2018

最近公司的某个客户要用上我们公司的产品,他的后台管理里的富文本编辑器要求有点多,开始打算用Quill,但是发现Quill根本满足不了他的需求。在调研了市面上的富文本编辑器后,最后似乎只剩了百度的ueditor。虽然很丑~~~,不过没关系,政府网站和这种效果更搭:-D 我是不是说了什么(逃

vue引入ueditor

步骤

  1. 百度ueditor下载,随便哪个版本就好(本文章以php版为例),不需要特别全面功能的可以考虑下UM喽
  2. 将对应的文件夹放到static中
  3. 修改前端vue部分引用的ueditor.confg.js,设置路径window.UEDITOR_HOME_URL = "/static/utf8-php/"
window.UEDITOR_HOME_URL = "/static/utf8-php/"

 var URL = window.UEDITOR_HOME_URL || getUEBasePath();
 /**
  * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
  */
 window.UEDITOR_CONFIG = {

  //为编辑器实例添加一个路径,这个不能被注释
  UEDITOR_HOME_URL: URL
  // 服务器统一请求接口路径
  , serverUrl: "http://localhost:3000/ueditor/ue"
 // ............ 下面忽略................

编写vue文件,我已经把static配置到webpack的路径里了,自己可以相应更改,ueditor中的各项方法可以在自己下载的百度ueditor包的index.html中找。

<template>
 <div class="hello">
 <script id="editor" type="text/plain"></script>
 <button @click="show">你敢点一下吗?</button>
 </div>
</template>

<script>
export default {
 name: 'HelloWorld',
 data () {
 return {
  editor: null
 }
 },
 methods: {
 show () {
  console.log(this.editor.getContent())
 }
 },
 mounted () {
 require('static/utf8-php/ueditor.config.js')
 require('static/utf8-php/ueditor.all.min.js')
 require('static/utf8-php/lang/zh-cn/zh-cn.js')
 require('static/utf8-php/ueditor.parse.min.js')
 this.editor = window.UE.getEditor('editor')
 },
 destroyed () {
 this.editor.destroy()
 }
}
</script>

注意事项

  1. 在步骤3中的路径一定要有最后一个"/"
  2. 步骤3中的serverUrl写成对应的服务端地址

node后端处理

express 实现

网上有人已经实现了express版的,使用express的有福了。不过我直接用他的是不能直接用的,在浏览器中报": unexcepected ",我将他的代码改了一下,不让它在返回配置是重定向,而是直接返回一个jsonp,jsonp内容设置为百度的ueditor包中的php文件下的config.json,记得用正则表达式或者直接用手把注释去掉,json是没有注释的。
这时你可能发现不报错了,但是图片上传会错误,报404。其实图片已经上传成功了,只是没有正确的加载,因为返回的路径只是路径,不是完整的url,就会请求到前端服务域下。(例如"http://localhost:8080/**")。此时修改config.json中"imageUrlPrefix": "http://localhost:3000",就可以将图片路径补充完整。跨域问题自己解决哈-----

  1. res.jsonp(config.json)
  2. 给config.json的imageUrlPrefix加后端域

koa实现

这时个比较精巧的库,而且将在v3中去掉了generator写法,generator现在已经渐渐不被支持,所以使用async写法吧。我主要用了await-busboy这个库,实现文件处理。

实现判断

const ActionType = ctx.query.action
// 当ActionType为config时返回与express中一样的json
// 当为uploadimage或uploadfile时处理
处理上传
const parse = require('await-busboy')
const parts = parse(ctx)
 let part,
  stream,
  tmp_name,
  file_path,
  filename
 while ((part = await parts)) {
  if (part.length) {
   // 此处解析到form的fields
   console.log({ key: part[0], value: part[1] })
  } else {
  // 此处解析到文件并以可读流形式返回,通过nodejs官方API存储
  if(ActionType === 'uploadimage' && img_type.indexOf(path.extname(part.filename)) >= 0 ){
   filename = 'pic_'+ (new Date()).getTime() + '_' + part.filename
   file_path = path.join(img_path, filename)
  } else if (ActionType === 'uploadfile'){
   filename = 'file_'+(new Date()).getTime()+'_'+part.filename
   file_path = path.join(files_path, filename)
  }
  stream = fs.createWriteStream(path.join(static_path,file_path))
  part.pipe(stream)
  tmp_name = part.filename
 }
 // 返回json要引用koa-jsonp哦~~

到这大概可以了,自己去试一下吧~~希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于jquery css的使用介绍
Apr 18 Javascript
js获取IP地址的方法小结
Jul 01 Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
图文详解Javascript中的上下文和作用域
Feb 15 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
vue-cli3 karma单元测试的实现
Jan 18 Javascript
vue中多路由表头吸顶实现的几种布局方式
Apr 12 Javascript
详解微信小程序文件下载--视频和图片
Apr 24 Javascript
Openlayers绘制地图标注
Sep 28 Javascript
Node.js搭建小程序后台服务
Jan 03 #Javascript
基于js文件加载优化(详解)
Jan 03 #Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 #jQuery
js 取消页面可以选中文字的功能方法
Jan 02 #Javascript
js阻止默认右键的下拉菜单方法
Jan 02 #Javascript
webpack实用小功能介绍
Jan 02 #Javascript
js最简单的双向绑定实例讲解
Jan 02 #Javascript
You might like
php入门小知识
2008/03/24 PHP
学习php分页代码实例
2013/10/24 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
Python内存管理实例分析
2019/07/10 Python
手写一个python迭代器过程详解
2019/08/27 Python
django创建超级用户过程解析
2019/09/18 Python
Python实现图片添加文字
2019/11/26 Python
详解Python设计模式之策略模式
2020/06/15 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
介绍一下sql server的安全性
2014/08/10 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
初二政治教学反思
2014/01/12 职场文书
迟到检讨书1000字
2014/01/15 职场文书
促销活动方案模板
2014/02/24 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
仙境之桥观后感
2015/06/16 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
Go Plugins插件的实现方式
2021/08/07 Golang
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
MySQL添加索引特点及优化问题
2022/07/23 MySQL