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 相关文章推荐
使用javascript访问XML数据的实例
Dec 27 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
详解JavaScript数组的操作大全
Oct 19 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
javascript原生ajax写法分享
Apr 10 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
JavaScript禁止用户多次提交的两种方法
Jul 24 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 Javascript
对Vue beforeRouteEnter 的next执行时机详解
Aug 25 Javascript
Vue项目查看当前使用的elementUI版本的方法
Sep 27 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
vue输入框使用模糊搜索功能的实现代码
May 26 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把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
jQuery 阴影插件代码分享
2012/01/09 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
说一说Python logging
2016/04/15 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
中医药大学毕业生自荐信
2013/11/08 职场文书
大学活动策划书范文
2014/01/10 职场文书
先进工作者获奖感言
2014/02/08 职场文书
企业党员公开承诺书
2014/03/26 职场文书
2014年销售部工作总结
2014/12/01 职场文书
学校远程教育工作总结
2015/08/11 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers