nodejs+mongodb+vue前后台配置ueditor的示例代码


Posted in NodeJs onJanuary 02, 2018

笔者在做一个个人博客项目的时候需要一个富文本框输入组件与后台进行交互,但是官方配置里面没有关于nodejs的,于是自己查阅资料研究了一下,最后终于应用到了系统中。

一、后台配置

首先是找到了这个项目:https://github.com/netpi/ueditor,可以通过他开源的代码将ueditor应用的node上面,大概方法如下:

1.先安装依赖:

npm install ueditor --save

2. 配置Node设置

//引入接口文件
const api = require('./api');
//引入文件模块
const fs = require('fs');
//引入处理路径模块
const path = require('path');
//引入处理post数据模块
var bodyParser = require('body-parser');

//引入express
const express = require('express');
const app = express();
//引入ueditor
const ueditor = require("ueditor")

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

//更改限定大小
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
// parse application/json
app.use(bodyParser.json())
app.use(api)

app.use("/ueditor/ue", ueditor(path.join(__dirname, 'public'), function(req, res, next) {
  //客户端上传文件设置
  var imgDir = '/img/ueditor/'
  var ActionType = req.query.action;
  if (ActionType === 'uploadimage' || ActionType === 'uploadfile' || ActionType === 'uploadvideo') {
    var file_url = imgDir; //默认图片上传地址
    /*其他上传格式的地址*/
    if (ActionType === 'uploadfile') {
      file_url = '/file/ueditor/'; //附件
    }
    if (ActionType === 'uploadvideo') {
      file_url = '/video/ueditor/'; //视频
    }
    res.ue_up(file_url); //你只要输入要保存的地址 。保存操作交给ueditor来做
    res.setHeader('Content-Type', 'text/html');
  }
  // 客户端发起图片列表请求
  else if (req.query.action === 'listimage') {
    var dir_url = imgDir;
    res.ue_list(dir_url); // 客户端会列出 dir_url 目录下的所有图片
  }
  // 客户端发起其它请求
  else {
    // console.log('config.json')
    res.setHeader('Content-Type', 'application/json');
    res.redirect('../nodejs/config.json');
  }
}));

//处理静态文件 todo
// 访问静态资源文件 这里是访问所有dist目录下的静态资源文件
app.use(express.static(path.resolve(__dirname, 'public/')))
app.use('/ueditor', function(req, res) {
  res.render('views/');
});

//监听8888端口
app.listen(8888);
console.log('sucess listen......')

这里需要注意的是因为已经require了ueditor,所以该插件已经安装到了node_module内,所以不需要再拷贝额外的文件了,只需要需要在这个目录下面新建public文件夹存放返回给后台的数据,另外,还需要引入配置文件config.json

二、前台配置

vue的前台配置需要下载ueditor的文件放在目录中,我将其放在了static文件夹中,在vue入口文件中引入ueditor的文件:

import '../static/UE/ueditor.config.js'
import '../static/UE/ueditor.all.min.js'
import '../static/UE/lang/zh-cn/zh-cn.js'
import '../static/UE/ueditor.parse.min.js'

值得一提的是需要将ueditor.config.js文件中的目录配置为放置该插件的目录:

window.UEDITOR_HOME_URL = "/static/UE/"

nodejs+mongodb+vue前后台配置ueditor的示例代码

然后在组件中配置好就可以了

我的UE.vue组件:

<template>
 <script :id=id type="text/plain"></script>
</template>

<script>
 export default {
  name: 'UE',
  data () {
   return {
    editor: null
   }
  },
  props: {
   defaultMsg: {
    type: String
   },
   config: {
    type: Object
   },
   id: {
    type: String
   },
  },
  mounted() {
   const _this = this;
   this.editor = UE.getEditor(this.id, this.config); // 初始化UE
   this.editor.addListener("ready", function () {
    _this.editor.setContent(_this.defaultMsg); // 确保UE加载完成后,放入内容。
   });
  },
  methods: {
   getUEContent() { // 获取内容方法
    return this.editor.getContent()
   }
  },
  destroyed() {
   this.editor.destroy();
  }
 }
</script>

引入方式:

<UE :defaultMsg=defaultMsg :config=config :id=ue1 ref="ue"></UE>

data() {
  return {
   defaultMsg: "",
   image: "",
   config: {
    initialFrameWidth: null,
    initialFrameHeight: 350
   },
   ue1: "ue1"
  };
 },

就可以成功配置好ueditor的基本功能了

三、前后台请求代理

在vue dev环境下可以设置webpack的proxyTable将后端请求代理转发,就可以轻松调试文件上传功能了,同理,vue build之后的文件则需要用Node将静态文件代理到和后端同一个端口上才可以请求后台端口

篇幅有限,文章可能讲述的不太清晰,具体的可以看我这个项目的代码:https://github.com/cheer4chai/myBlog

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
基于NodeJS的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 #NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 #NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 #NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 #NodeJs
nodejs实现简单的gulp打包
Dec 21 #NodeJs
nodejs调取微信收货地址的方法
Dec 20 #NodeJs
基于nodejs实现微信支付功能
Dec 20 #NodeJs
You might like
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
PHP中比较时间大小实例
2014/08/21 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
javascript 闭包
2011/09/15 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
详解Python import方法引入模块的实例
2017/08/02 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python中文编码知识点
2019/02/18 Python
Python PO设计模式的具体使用
2019/08/16 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
奖学金感谢信
2015/01/21 职场文书
小学安全工作总结2015
2015/05/18 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Python first-order-model实现让照片动起来
2022/06/25 Python