Electron和Nestjs的优秀示例项目,不进来看看吗😉

683 阅读2分钟

前段时间闲的慌,严重精神内耗,遂做了这个软件。

项目介绍

此软件是模仿微软ToDo做的一款桌面代办软件,目前支持在Windows平台和Linux平台运行。

已良好运行好几个月,写篇文章记录一下。

前端部分

技术栈

采用主流的ViteVue3NaiveUIpiniaElectronTs等技术搭建的。 图标库采用的IconPark。安装了electron-updater,可以自动更新。

特性

  • 使用WebSocket与后端通信,用于获取通知。首次打开软件,会获取一个ws-key,这是后台用来识别当前用户的socket链接的id。后端发送消息都是基于ws-key
  • 自动更新。不需要每次更新都去手动下载安装包安装
  • 自定义主题,暗色亮色主题色,随心所欲
  • 可设置开机自启
  • 待办页每天都有精美壁纸,随心换(可能需要科学上网)
  • 完全不会收集用户的隐私信息,只需要一个邮箱注册。

使用示例

基本操作

基本操作.gif

主题切换

主题设置.gif

菜单设置

菜单设置.gif

小窗模式

小窗模式.gif

技术难点

我觉得在前端部分中,最难的就是左侧目录拖动,和待办列表页的标题设置。前前后后改过很多次。

拖动部分示例代码

image.png

列表页的标题设置

image.png

列表页的背景,先加载缩略图,再切换至大图

image.png

后端部分

技术栈

后端是使用NestJs,Redis,MongoDB,log4js等技术搭建的。全量使用TypeScript

特性

  • 定时任务,每天0点获取8张超清背景图片
  • 手动添加定时任务,创建的待办只要有合理的提醒时间,到时就会通知
  • 日志系统,系统每个模块都有日志,BUG溯源很简单

技术难点

一个是数据库设计,每次设计出来总有点不合适。一个是代码结构组织,总想让结构很优雅。最重要的socket连接,本地测试好好的,部署到nginx就不行了,搞了一晚上才发现没有配置nginx转发websocket😭

总结

这个项目也算是自己从0到1独立开发的吧。前端部分还好,有经验。后端部分完全就是天天翻文档😂,nestjs官网翻遍了。还有就是服务器部署和自动更新。

做完之后发现还是收获了很多东西。像拖拽API,vue的自定义指令,websocket心跳连接,electron主进程和渲染进程的通信,electron打包和自动更新,eventBUS,nestjs框架,数据库的操作,日志系统等。

最后,项目地址github

喜欢的话,给个一键三连🥰