Files
Jnote-nodeJs/CHANGELOG.md
dcr_xuxgc d759a9e740 init
2026-06-12 17:49:54 +08:00

4.0 KiB
Raw Permalink Blame History

修改记录

2026-06-10

1. 优化图片上传性能

文件: server/src/routes/settings.js

问题: 批量上传图片到 RUSTFS 时串行执行,每张图片需等待上一张完成,导致上传时间过长。

解决方案: 将 for...of 串行上传改为 Promise.all 并行上传。

改动内容:

  • 将批量上传接口 /upload-images 的串行逻辑改为并行
  • 使用 Promise.all() 同时上传所有图片

2. 新增服务端配置页面

目标: 在前端设置界面添加配置页面,支持动态修改 .env 配置并重启后端服务。

后端新增文件

server/src/config/envManager.js

  • readEnv() - 读取并解析 .env 文件
  • writeEnv(config) - 将配置对象写入 .env 文件
  • getSafeConfig() - 返回安全展示的配置(密码用 ****** 替代)

server/src/routes/config.js

  • GET /api/config - 获取当前配置(密码隐藏)
  • PUT /api/config - 更新配置并写入 .env 文件
  • POST /api/config/restart - 优雅重启后端服务

后端修改文件

server/src/index.js

  • 注册新路由 app.use('/api/config', configRouter)

前端新增文件

src/views/ServerConfigView.vue

  • 配置分组显示数据库、RUSTFS、服务器
  • 密码字段显示为 ******,修改时留空则不修改原密码
  • 保存按钮 - 调用 API 保存配置到 .env
  • 重启按钮 - 调用 API 优雅重启服务(需 PM2 等进程管理器)

前端修改文件

src/router/index.js

  • 添加路由 /server-config -> ServerConfigView懒加载

src/i18n/index.js

  • 添加 serverConfig 中英文翻译

src/components/SiteHeader.vue

  • 导航栏添加"服务端配置"链接

使用说明

  1. 启动后端(需使用 PM2 管理进程):

    pm2 start npm -- run dev
    
  2. 访问配置页面: 启动后端后访问 /server-config

  3. 保存配置: 点击"保存配置"按钮,配置会写入 .env 文件

  4. 重启服务: 点击"重启服务"按钮,后端会优雅退出(process.exit(0)PM2 会自动重启

注意事项

  • 密码字段显示为 ******,如需修改请输入新密码,留空则保持原密码不变
  • 重启功能需要配合 PM2 等进程管理器使用,否则服务将无法自动恢复

3. 新增文章编辑功能

目标: 提供完整的文章新建和编辑功能。

前端新增文件

src/views/PostEditorView.vue

  • 新建文章页面 (/post/new)
  • 编辑文章页面 (/post/edit/:id)
  • 包含标题、日期、摘要、正文等字段
  • 保存后自动返回文章列表

前端修改文件

src/views/HomeView.vue

  • 页面头部添加"新建文章"按钮

src/views/PostDetail.vue

  • 添加"编辑"和"删除"按钮
  • 支持从文章详情页直接编辑或删除

src/router/index.js

  • 添加路由 /post/new -> PostEditorView
  • 添加路由 /post/edit/:id -> PostEditorView

src/i18n/index.js

  • 添加 home.newPost 翻译
  • 添加 postEditor 完整翻译(中英文)

4. 后端定时任务调度器

目标: 将定时任务调度逻辑从前端移到后端,确保即使没有人打开页面,任务也会按计划执行。

新增文件

server/src/config/cronScheduler.js

  • start() - 启动调度器,每 10 秒检查一次到期任务
  • stop() - 停止调度器
  • checkAndRunTasks() - 检查并执行到期的任务
  • executeTask(task) - 执行单个定时任务

后端修改文件

server/src/index.js

  • 导入 cronScheduler 模块
  • 在服务器启动时调用 cronScheduler.start()

功能说明

  • 调度器每 10 秒检查一次所有已启用的定时任务
  • 当任务的 nextRun 时间已到,立即执行任务
  • 执行后自动计算下一次执行时间并更新数据库
  • 任务在后端运行,不依赖前端页面打开

注意事项

  • 定时任务由后端调度,前端 CronView 仍可手动执行和查看任务状态
  • 后端调度需在服务器运行期间持续工作(由 PM2 等进程管理器保持)