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十个最常用的自定义函数(中文版)
Sep 07 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
Dec 27 Javascript
javascript实现的右下角弹窗实例
Apr 24 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
谈谈AngularJs中的隐藏和显示
Dec 09 Javascript
js+html5操作sqlite数据库的方法
Feb 02 Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 Javascript
JavaScript闭包原理与用法实例分析
Aug 10 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 Javascript
微信小程序自定义底部弹出框功能
Nov 18 Javascript
Vue router安装及使用方法解析
Dec 02 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抓取https的内容的代码
2010/04/06 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
jQuery对象和DOM对象使用说明
2010/06/25 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
JavaScript严格模式禁用With语句的原因
2014/10/20 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
在python的类中动态添加属性与生成对象
2016/09/17 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
基于Python实现2种反转链表方法代码实例
2020/07/06 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
Linux中如何用命令创建目录
2015/01/12 面试题
精细化工应届生求职信
2013/11/17 职场文书
结婚典礼证婚词
2014/01/08 职场文书
幼儿教师求职信
2014/05/24 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
辛亥革命观后感
2015/06/02 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android