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 Prototype对象
Jan 07 Javascript
jquery text,radio,checkbox,select操作实现代码
Jul 09 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
JavaScript函数基础详解
Feb 03 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
vue中实现上传文件给后台实例详解
Aug 22 Javascript
vue中的计算属性和侦听属性
Nov 06 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
python 图片验证码代码
2008/12/07 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
Python 装饰器使用详解
2017/07/29 Python
基于Django的python验证码(实例讲解)
2017/10/23 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
《秋姑娘的信》教学反思
2014/02/28 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
奥运会口号
2014/06/13 职场文书
微笑面对生活演讲稿
2014/09/23 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android