博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue引入ueditor及node后台配置
阅读量:5851 次
发布时间:2019-06-19

本文共 2458 字,大约阅读时间需要 8 分钟。

最近公司的某个客户要用上我们公司的产品,他的后台管理里的富文本编辑器要求有点多,开始打算用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"    // ............   下面忽略................
  1. 编写vue文件,我已经把static配置到webpack的路径里了,自己可以相应更改,ueditor中的各项方法可以在自己下载的百度ueditor包的index.html中找。

注意事项

  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这个库,实现文件处理。

  1. 实现判断

const ActionType = ctx.query.action// 当ActionType为config时返回与express中一样的json// 当为uploadimage或uploadfile时处理
  1. 处理上传

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哦~~

到这大概可以了,自己去试一下吧~~

转载地址:http://gbdjx.baihongyu.com/

你可能感兴趣的文章
NGUI的输入框制作(attach- input filed script的使用)
查看>>
NgDL:第三周:浅层NN
查看>>
Centreon 安装部署指南
查看>>
项目管理修炼之道之规划项目
查看>>
学生机房PC也桌面虚拟化!
查看>>
Ext.Net 1.2.0_分析 Ext.Net.ResourceHandler 资源处理程序
查看>>
Git 常用命令
查看>>
[翻译] 使用CSS进行文字旋转
查看>>
读取本地已有的.db数据库
查看>>
C#发现之旅第十一讲 使用反射和特性构造自己的ORM框架
查看>>
使用GHOST对Windows操作系统进行备份和还原
查看>>
KMeans (K均值)算法讲解及实现
查看>>
为什么不应该使用Zookeeper做服务发现?(转载)
查看>>
《JavaScript核心概念及实践》——2.2 变量
查看>>
关于java 1.8的Lambda表达式详解
查看>>
控制器 控制器view cell的关系
查看>>
Nginx的健康检查机制
查看>>
Web服务器压力测试工具http_load、webbench、ab、Siege使用教程
查看>>
RHEL6.3 源码安装Puppet
查看>>
Mac软件下载备忘
查看>>