electron 和我们的项目
electron 和 我们的项目
前端桌面的应用开发框架,个人感觉比nw好用
- api不多。NB的是能结合前端UI开发,瞬间让丰富的wenUI在桌面端转起来,因为chorme内核基本不用去考虑兼容问题,而且而且还跨平台。所以是现在桌面端开发的非常靠谱的技术栈。
- 缺点是生成的安装包偏大,不过在现在硬件富余的PC机上,可以忽略不计吧。
我们的项目:
目前的八爪鱼团队,致力打造领先的数据采集器。通过我们的采集工具方便用户比较容易采集到数据。
- 结合我们的项目,内存资源管理问题(我们项目要比较考虑这个,根据业务需要,会有比较多的browserWindow,而且显隐比较频繁)这就需要我们对窗口管理精准。能统一销毁,精准显示(这是我们这次迭代的重要)
- IPC通信。这个应该会是electron项目的一个痛点。官方提供的方案很基本的观察者模式,但是业务复杂了,最后也需要能统一管理模块(目前还没有想的很好方法,做一遍梳理,方便下次迭代优化),现在总结的就是:
- 能不用就不要用ipc通信
- 能一次ipc搞定就不要分两次
- 及时销毁销毁监听
- 安全模块。这个是一个比较重要的模块。既然是客户端,则代码就放在电脑磁盘上,敏感业务逻辑还是比较容易暴露的,还包括一些敏感的信息。我们采用的 .node等(属于公司机密,就不多说了),来保证代码的安全性。但是这有个大bug隐患(.node文件,会比较容易被回收。会导致模块不能运行)
- 工程化问题,这个比web项目复杂多,也是百步之行最后一步,我们踩坑不少。
- 其他开发的和web开发差不多了,但是仅仅是理论上差不多
遇坑无数:
- 兼容性问题,虽然win和mac是同一套webui和chrome内核,但是mac下1px问题依然存在,mac下srcollbar不占宽高
- electron自身 api在不同系统下表现不同,
- 特殊依赖包问题。我们又个需求在win下支撑本机账户登录mssql数据库,这个功能在mac下不能实现(显然mac用户怎么会有用账户直接直接登录mssql),这个模块只能为win定制。怎么考虑项目代码统一管理情况下,在依赖都不同的情况下怎么开发问题。打包发布问题。
- 刚才说到.node文件编译。在mac、win下是两套代码编译。然后又发布在同一个模块里面。
- 息屏后 elctron 防止关键.node文件被回收
- 打包后的文件在不同系统下签名和安全策略问题
- mac打包后代码公证
- 数据库支持管理,我们支持mysql,mssql,orcal,sqllite四种数据库
- 多语言管理,多语言平时的开发调试
- 安全代码策略问,
- 自动升级问题
- 工程化发布问题
- bpmn流程管理(我们需要这个步骤的执行控制)
…
还有一些问题和web项目开发比较雷同
- 项目工程化,代码规范,
- 测试用例覆盖管理
- code review 流程化
- 版本管理问题
…
在接下来就是编码能力
- 面向对象
- 合理的模块化
- es ts 新特性增加代码可读性
- js各种避坑指南
- react mbox最佳实现
最后解决问题的能力
实际开发会遇到各种问题,我们就遇到一个问题中途一个sqllite版本升级了问题,失去了本地加密的能力,赶紧打补丁包。这个时候无形中给开发增加了一个恶心的开发任务:
- 怎么判断有没有被安装高版本,从而判断有没有必要copy数据库
- 怎么考虑兼容装两个sqllite模块
- 从高版本读出来后,写入可以加密的低版本
- 什么时候备份出新版本数据库。
- 什么时候写入低版本
- 保证文件不被锁定后不能做删除和重命名操作
mac代码公证,要求说有引用的二进制引用都必须签名,
- 怎么打包
- 怎么在 electron-builder build 前做好签名而且不从新被编译
- 怎么签名
- 怎么公证
怎么一个二进制.node安全模块同时兼容mac和win
性能的优化优化再优化
原文作者: 刘百灵
原文链接: https://liubailing.github.io/20200601/electron/项目中的electron/
版权声明: 转载请注明出处(必须保留作者署名及链接)