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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
Jquery事件的连接使用示例
Jun 18 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
jQuery实现为图片添加镜头放大效果的方法
Jun 25 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
Mar 15 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
Nov 05 Javascript
Vue-CLI3.x 设置反向代理的方法
Dec 06 Javascript
js中switch语句的学习笔记
Mar 25 Javascript
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
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入门的学习方法
2007/01/02 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
php实现httpRequest的方法
2015/03/13 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
《哪吒闹海》教学反思
2014/02/28 职场文书
英语故事演讲稿
2014/04/29 职场文书
团日活动总结书
2014/05/08 职场文书
北京奥运会主题口号
2014/06/13 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
师德师风事迹材料
2014/12/20 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
导游词之千岛湖
2019/09/23 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python