当前位置: 首页 > news >正文

wangEditor 编辑器 Vue 2.0 + Nodejs 配置

资料

  1. Vue2.0 版本的安装:https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8
  2. 上传图片配置:https://www.wangeditor.com/v5/menu-config.html#%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87

安装步骤

1.安装界面基础部分

<!-- 富文本编辑器 -->
<template><div class="WangEditor" style="border: 1px solid #ccc"><Toolbarstyle="border-bottom: 1px solid #ccc":editor="editor":defaultConfig="toolbarConfig":mode="mode"/><Editorstyle="height: 500px; overflow-y: hidden;"v-model="html":defaultConfig="editorConfig":mode="mode"@onCreated="onCreated"/></div>
</template><script>
import '@wangeditor/editor/dist/css/style.css' // 引入 css
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'export default {components: { Editor, Toolbar },data() {return {editor: null,html: '<p>hello</p>',toolbarConfig: {},editorConfig: { placeholder: '请输入内容...',},mode: 'default', // or 'simple'}},mounted() {// 模拟 ajax 请求,异步渲染编辑器setTimeout(() => {this.html = '<p>模拟 Ajax 异步设置内容 HTML</p>'}, 1500)},beforeDestroy() {const editor = this.editorif (editor == null) returneditor.destroy() // 组件销毁时,及时销毁编辑器},methods: {// 编辑器实例创建完毕后回调onCreated(editor) {// 对象密封this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错},},}
</script><style scoped lang="scss">
.WangEditor{// 去掉重影小叉::v-deep .btn-close {svg {display: none;}}
}
</style>

2.配置上传服务

editorConfig: { placeholder: '请输入内容...',MENU_CONF: {uploadImage:{fieldName: 'images',server: 'http://localhost:3000/api/uploadImage', // 默认的是8081,这里要设置自己的IP和端口maxSize: 5 * 1024 * 1024, // 5MB}}
},

3.搭建后端Api

3-1. 设置静态文件,添加目录
// 创建主应用
const app = express();// 使 public/uploads 目录可以作为静态文件目录访问
app.use('/uploads', express.static(path.join(__dirname, 'public', 'uploads')));
3-2. 配置Multer
// Multer 配置
const storage = multer.diskStorage({destination: (req, file, cb) => {cb(null, 'public/uploads/'); // 上传文件的存储路径},filename: (req, file, cb) => {// 对文件名进行处理,确保文件名中的非英文字符不会出现乱码const sanitizedFilename = Date.now() + '-' + encodeURIComponent(file.originalname);cb(null, sanitizedFilename); // 使用 URL 编码后的文件名}
});// 创建 multer 实例
const upload = multer({storage: storage,limits: { fileSize: 5 * 1024 * 1024 },  // 限制文件大小最大为5MB
}).single('images');  // 这里使用 single() 来接收单个文件,'images' 是表单字段名称
3-3. 配置图片上传api
// 图片上传
app.post('/api/uploadImage', (req, res) => {// 使用 multer 中间件来处理文件上传upload(req, res, (err) => {if (err) {return res.status(500).json({errno: 1,message: '文件上传失败',});}const file = req.file;  // 上传的文件信息存储在 req.file 中if (!file) {return res.status(400).json({errno: 1,message: '没有上传文件',});}// 获取服务器的 IP 地址const ip = req.socket.localAddress === '::1' ? 'localhost' : req.socket.localAddress;const port = 3000; // 端口号const baseUrl = `http://${ip}:${port}/uploads/`; // 构建完整的 URL// 返回文件的URL路径res.status(200).json({errno: 0,data: {url: `${baseUrl}${file.filename}`,  // 上传后的文件路径alt: 'Uploaded Image',href: '',  // 可选的链接(点击图片时跳转)},});})
})

4.解决弹窗小叉重影

<style scoped lang="scss">
.WangEditor{// 去掉重影小叉::v-deep .btn-close {svg {display: none;}}
}
</style>
http://www.lryc.cn/news/539297.html

相关文章:

  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • x86平台基于Qt+opengl优化ffmpeg软解码1080P视频渲染效率
  • 机器学习入门-读书摘要
  • 前端【技术方案】重构项目
  • 大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
  • RabbitMQ服务异步通信
  • Python常见面试题的详解7
  • Django REST Framework (DRF) 中用于构建 API 视图类解析
  • Huatuo热更新--安装HybridCLR
  • 读书笔记 - 修改代码的艺术
  • 【Go并发编程】Goroutine 调度器揭秘:从 GMP 模型到 Work Stealing 算法
  • c# -01新属性-模式匹配、弃元、析构元组和其他类型
  • 同步异步日志系统-日志落地模块的实现
  • LabVIEW 天然气水合物电声联合探测
  • 类型通配符上限
  • 嵌入式音视频开发(二)ffmpeg音视频同步
  • Mongodb数据管理
  • Django 创建表 choices的妙用:get_<field_name>_display()
  • Spring Boot 集成 Kettle
  • 自学Java-面向对象高级(final、单例类、枚举类、抽象类、接口)
  • Hutool - Cache:简单而强大的缓存实现
  • DeepSeek 通过 API 对接第三方客户端 告别“服务器繁忙”
  • Python 基础-循环
  • Java和SQL测试、性能监控中常用工具
  • SQL 注入攻击详解[基础篇]:Web 应用程序安全漏洞与防御策略
  • 【ArcGIS Pro二次开发】(87):样式_Style的用法
  • DEX-EE三指灵巧手:扩展AI与机器人研究的边界
  • 简站主题:简洁、实用、SEO友好、安全性高和后期易于维护的wordpress主题
  • 23种设计模式 - 责任链
  • Flink SQL与Doris实时数仓Join实战教程(理论+实例保姆级教程)