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 相关文章推荐
Prototype使用指南之selector.js
Jan 10 Javascript
用JQUERY增删元素的代码
Feb 14 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
angular简介和其特点介绍
Jan 29 Javascript
JS实现的跨浏览器解析XML文件实例
Jun 21 Javascript
微信小程序 购物车简单实例
Oct 24 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
js针对图片加载失败的处理方法分析
Aug 24 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
Sep 21 jQuery
antd多选下拉框一行展示的实现方式
Oct 31 Javascript
React列表栏及购物车组件使用详解
Jun 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
上海无线电三厂简史修改版
2021/03/01 无线电
php输出表格的实现代码(修正版)
2010/12/29 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
JavaScript URL参数读取改进版
2009/01/16 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
简单的js计算器实现
2016/10/26 Javascript
Js apply方法详解
2017/02/16 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
java直接调用python脚本的例子
2014/02/16 Python
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python 私有函数的实例详解
2017/09/11 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
详解Python IO口多路复用
2020/06/17 Python
python利用opencv实现颜色检测
2021/02/23 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
工程项目经理岗位职责
2013/12/15 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
党员年度个人总结
2015/02/14 职场文书
Pytest中skip和skipif的具体使用方法
2021/06/30 Python