很多年前,我没有想过自己会开发桌面软件。
我的职业是一名教师,日常工作主要围绕备课、教学、学生管理展开。但是在长期的教学过程中,我逐渐发现,很多重复性的工作其实可以通过软件来解决。
例如:
- 学生成绩统计;
- 数据分析;
- 教学资料整理;
- 班级信息管理。
这些工作并不是教师最核心的教学任务,却占用了大量时间。
于是,我开始尝试学习编程,希望能够开发一些真正服务于教师的软件工具。
在选择开发技术路线时,我最终选择了 Electron。
从 Web 开发到桌面软件
最开始接触软件开发时,我学习的是前端技术。
Vue、JavaScript、HTML、CSS,这些技术让我能够快速构建漂亮的用户界面。
但是很快我发现,一个真正面向教师的软件,很多时候需要运行在电脑本地。
例如我的学生成绩分析系统:
- 教师需要导入本地 Excel 数据;
- 需要保存大量学生信息;
- 需要离线使用;
- 需要处理本地文件;
- 需要访问电脑硬件资源。
如果只是开发一个网页应用,就会受到很多限制。
我希望开发的是:
一个安装在电脑上的专业工具,而不是一个必须打开浏览器才能使用的网站。
因此,我开始关注桌面应用开发。
为什么没有选择传统桌面开发技术?
开发 Windows 桌面软件,传统方案有很多:
- C++ + Qt;
- C# + WPF;
- .NET MAUI;
- JavaFX。
这些技术都非常成熟。
但是对于个人开发者来说,它们也存在一些挑战。
例如:
C++ + Qt
Qt 非常强大,可以开发高性能的软件。
但是学习成本较高。
除了业务逻辑之外,还需要处理:
- 内存管理;
- 编译环境;
- 跨平台适配;
- UI开发效率。
对于希望快速验证产品想法的个人开发者来说,开发速度可能不是最快。
C# + WPF
WPF 是 Windows 平台非常优秀的技术。
如果目标只是开发 Windows 软件,它是一个很好的选择。
但是我的目标不仅仅是 Windows。
未来我希望软件能够运行在:
- Windows;
- macOS;
- Linux。
因此,我希望选择一个跨平台方案。
Electron 给我的最大吸引力:开发效率
Electron 最大的特点,就是:
使用 Web 技术开发桌面软件。
它把:
- Chromium 浏览器内核;
- Node.js运行环境;
结合在一起,让开发者可以使用熟悉的前端技术创建桌面应用。
对于我来说,这一点非常重要。
因为我已经熟悉:
- Vue;
- JavaScript;
- TypeScript;
- CSS。
使用 Electron,我可以把已有的前端开发经验直接应用到桌面软件开发中。
Electron 如何帮助我开发教师软件?
以我的学生成绩分析系统为例。
软件需要:
1. 丰富的数据展示
成绩分析离不开图表。
例如:
- 成绩分布;
- 班级排名变化;
- 学生成绩趋势。
通过 Vue + ECharts,可以快速实现各种数据可视化。
2. 本地数据存储
教师的数据通常比较敏感。
学生成绩不适合上传到服务器。
因此,我选择:
- SQLite数据库;
- 本地文件存储。
数据全部保存在教师自己的电脑中。
这也符合教师用户的实际需求。
3. 调用系统能力
桌面软件需要处理:
- 文件读取;
- Excel导入;
- 图片处理;
- 本地路径管理。
Electron通过Node.js,可以方便地访问系统资源。
Electron 的缺点也很明显
当然,Electron并不是完美的。
最大的争议就是:
资源占用较高
因为Electron内置了Chromium,所以软件体积通常较大。
相比原生程序:
- 安装包更大;
- 内存占用更高。
例如,一个简单的Electron程序可能需要几十MB甚至更多内存。
而一个传统C++程序可能小很多。
性能不是最高
如果开发:
- 大型3D软件;
- 视频编辑软件;
- 高性能游戏;
Electron并不是最佳选择。
但是对于:
- 办公软件;
- 教育工具;
- 数据分析软件;
- 效率工具;
Electron完全可以满足需求。
对个人开发者来说,开发效率更重要
作为个人开发者,我认为:
技术选择不能只看性能。
更重要的是:
能不能快速把想法变成产品。
大型公司可以投入大量人力优化性能。
但是个人开发者最大的优势是:
快速发现需求;
快速开发;
快速迭代。
Electron降低了桌面软件开发门槛,让一个熟悉Web技术的开发者,也能够开发专业的软件产品。
这对于独立开发者来说,非常有价值。
我的下一步计划
目前,我正在继续完善自己的教师软件产品。
未来,我希望利用 Electron 开发更多工具:
- 教师成绩分析软件;
- 作业统计软件;
- 英语听写管理软件;
- 教师个人效率工具。
我的目标不是开发一个复杂的大型系统。
而是:
用技术解决教师工作中的真实问题,让教育工作变得更加高效。
这也是我选择 Electron 开发桌面软件的原因。