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中的this关键字介绍与使用实例
Jun 21 Javascript
jquery代码实现简单的随机图片瀑布流效果
Apr 20 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
Aug 20 Javascript
又拍云 Node.js 实现文件上传、删除功能
Oct 28 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
koa2 从入门到精通(小结)
Jul 23 Javascript
Angular性能优化之第三方组件和懒加载技术
May 10 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
MySQL中create table语句的基本语法是
2007/01/15 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
javascript cookies操作集合
2010/04/12 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
vue 根据选择的月份动态展示日期对应的星期几
2021/02/06 Vue.js
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
python批量修改文件名的实现代码
2014/09/01 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Python Flask-web表单使用详解
2017/11/18 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python如何变换环境
2020/07/21 Python
西班牙香水和化妆品网上商店:Douglas
2017/10/29 全球购物
毕业生就业自荐信
2013/12/04 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL