electron 和 我们的项目

前端桌面的应用开发框架,个人感觉比nw好用

  • api不多。NB的是能结合前端UI开发,瞬间让丰富的wenUI在桌面端转起来,因为chorme内核基本不用去考虑兼容问题,而且而且还跨平台。所以是现在桌面端开发的非常靠谱的技术栈。
  • 缺点是生成的安装包偏大,不过在现在硬件富余的PC机上,可以忽略不计吧。

我们的项目:
目前的八爪鱼团队,致力打造领先的数据采集器。通过我们的采集工具方便用户比较容易采集到数据。

  • 结合我们的项目,内存资源管理问题(我们项目要比较考虑这个,根据业务需要,会有比较多的browserWindow,而且显隐比较频繁)这就需要我们对窗口管理精准。能统一销毁,精准显示(这是我们这次迭代的重要)
  • IPC通信。这个应该会是electron项目的一个痛点。官方提供的方案很基本的观察者模式,但是业务复杂了,最后也需要能统一管理模块(目前还没有想的很好方法,做一遍梳理,方便下次迭代优化),现在总结的就是:
    • 能不用就不要用ipc通信
    • 能一次ipc搞定就不要分两次
    • 及时销毁销毁监听
  • 安全模块。这个是一个比较重要的模块。既然是客户端,则代码就放在电脑磁盘上,敏感业务逻辑还是比较容易暴露的,还包括一些敏感的信息。我们采用的 .node等(属于公司机密,就不多说了),来保证代码的安全性。但是这有个大bug隐患(.node文件,会比较容易被回收。会导致模块不能运行)
  • 工程化问题,这个比web项目复杂多,也是百步之行最后一步,我们踩坑不少。
  • 其他开发的和web开发差不多了,但是仅仅是理论上差不多

遇坑无数:

  1. 兼容性问题,虽然win和mac是同一套webui和chrome内核,但是mac下1px问题依然存在,mac下srcollbar不占宽高
  2. electron自身 api在不同系统下表现不同,
  3. 特殊依赖包问题。我们又个需求在win下支撑本机账户登录mssql数据库,这个功能在mac下不能实现(显然mac用户怎么会有用账户直接直接登录mssql),这个模块只能为win定制。怎么考虑项目代码统一管理情况下,在依赖都不同的情况下怎么开发问题。打包发布问题。
  4. 刚才说到.node文件编译。在mac、win下是两套代码编译。然后又发布在同一个模块里面。
  5. 息屏后 elctron 防止关键.node文件被回收
  6. 打包后的文件在不同系统下签名和安全策略问题
  7. mac打包后代码公证
  8. 数据库支持管理,我们支持mysql,mssql,orcal,sqllite四种数据库
  9. 多语言管理,多语言平时的开发调试
  10. 安全代码策略问,
  11. 自动升级问题
  12. 工程化发布问题
  13. bpmn流程管理(我们需要这个步骤的执行控制)
    …

还有一些问题和web项目开发比较雷同

  1. 项目工程化,代码规范,
  2. 测试用例覆盖管理
  3. code review 流程化
  4. 版本管理问题
    …

在接下来就是编码能力

  1. 面向对象
  2. 合理的模块化
  3. es ts 新特性增加代码可读性
  4. js各种避坑指南
  5. react mbox最佳实现

最后解决问题的能力

  1. 实际开发会遇到各种问题,我们就遇到一个问题中途一个sqllite版本升级了问题,失去了本地加密的能力,赶紧打补丁包。这个时候无形中给开发增加了一个恶心的开发任务:

    • 怎么判断有没有被安装高版本,从而判断有没有必要copy数据库
    • 怎么考虑兼容装两个sqllite模块
    • 从高版本读出来后,写入可以加密的低版本
    • 什么时候备份出新版本数据库。
    • 什么时候写入低版本
    • 保证文件不被锁定后不能做删除和重命名操作
  2. mac代码公证,要求说有引用的二进制引用都必须签名,

    • 怎么打包
    • 怎么在 electron-builder build 前做好签名而且不从新被编译
    • 怎么签名
    • 怎么公证
  3. 怎么一个二进制.node安全模块同时兼容mac和win

  4. 性能的优化优化再优化