随着得物平台业务的快速发展,商家客服成为连接用户与品牌的重要桥梁。为了提升商家客服的服务品质,得物决定开发桌面端应用,以便更高效地解决用户购买咨询诉求。本文将详细介绍得物商家客服桌面端采用Electron技术的实践过程。
一、业务背景
得物商家客服工作台的定位是通过工具和数据服务商家,一站式解决用户购买咨询诉求。在已有web端聊天系统的基础上,商家客服收到了部分反馈,如台式机未安装音频设备导致无法播放声音、web通知无法提醒到最上层影响客服工作效率等。这些问题在web端难以得到根本解决,因此得物决定开发桌面端应用。
二、技术选型
在开发桌面端应用时,得物对多种开发框架进行了调研,包括Native、QT、Flutter、NW以及Electron等。最终选择了Electron作为开发框架,主要基于以下原因:
- 跨平台能力:Electron基于Chromium和Node.js,支持Windows、macOS和Linux等操作系统,无需为不同平台分别开发。
- 开发效率:Electron允许使用JavaScript、HTML和CSS等前端技术栈进行开发,降低了开发门槛,提高了开发效率。
- 生态活跃:Electron拥有非常活跃的社区和丰富的第三方库,可以快速集成各种功能。
- 快速交付:Electron能够复用web系统的代码,只需关注主进程即可,满足业务需要的系统级别功能。
三、项目架构
Electron项目架构主要包括主进程和渲染进程。
- 主进程:负责创建和管理BrowserWindow实例以及应用程序事件,如注册全局快捷方式、创建系统菜单和对话框、响应自动更新事件等。
- 渲染进程:负责运行应用程序的用户界面,提供了所有DOM API、Node.js API和Electron API的子集。渲染进程可以有多个,每个进程在自己的空间中运行,互不干扰。
四、技术实现
1. 通信模块
主进程和渲染进程之间通过IPC(Inter-Process Communication)进行通信。Electron提供了ipcMain和ipcRenderer两个模块来实现进程间通信,支持异步和同步通信,方便数据交换和事件处理。
2. 菜单模块
得物商家客服桌面端应用采用了自定义菜单而非原生菜单。自定义菜单具有更大的灵活性,可以根据业务需求进行定制和调整,以提升用户体验。
3. 托盘模块
托盘属于系统级的操作,需要在主进程中设置。在程序ready后,通过Electron的Tray模块实现托盘功能,便于用户快速访问应用。
4. 异常处理模块
得物商家客服桌面端应用通过Electron框架API和Node.js API进行异常处理。检测到系统异常后,应用会自动刷新并上报异常信息。对于渲染进程的异常,使用sls和arms处理;对于主进程的异常,使用Electron的crashReporter API记录日志。
5. 渲染进程功能模块
渲染进程的代码大部分与商家客服web端一致,只需进行部分迁移和改造。其中,登录信息本地化是一个重要的改造点:在登录成功时,将账号信息缓存到本地,下次打开应用时无需重新输入账号信息,提升便捷性。
五、具体功能模块开发
1. 登录改造
为了实现登录信息的本地化,得物对登录模块进行了改造。在登录成功时,将账号信息缓存到本地存储中。下次打开应用时,直接从本地存储中获取账号信息并自动登录,减少重复操作。
2. 静态资源打包
Electron提供了将静态资源打包到安装程序的功能。在安装时,将项目文件同步安装到用户电脑中,使其具备访问本地文件的能力,减少网络请求占用资源,并改善因网速问题导致的静态资源获取延迟。
3. 数据存储
得物商家客服桌面端应用使用Electron-store第三方库来实现数据存储。Electron-store是一个轻量级、简单易用的持久化方案,可以方便地存储和读取应用数据,支持本地配置管理。
六、总结与展望
通过Electron技术实践,得物成功开发了一款跨平台、高性能的商家客服桌面端应用。该应用不仅提升了商家客服的工作效率和服务品质,还为得物平台的未来发展奠定了坚实的基础。未来,得物将继续探索和创新,为商家和用户提供更加优质、高效的服务体验。