umi-example-electron icon indicating copy to clipboard operation
umi-example-electron copied to clipboard

refactor with Umi@4 and electron@22

Open leftstick opened this issue 2 years ago • 6 comments

Brand new example for electron

leftstick avatar Jan 05 '23 09:01 leftstick

其实我不太建议electron去做脚手架的例子,实际使用更多是把现有的web脚手架改成electron的项目。

不建议electron做脚手架的原因:

  1. 不管是react还是vue都有成熟的脚手架
  2. 用户也更熟悉自己常用的脚手架
  3. 如果按照现有的脚手架改加上electron元素感觉会重复,然后改一个地方的脚手架还要同步更新另一个地方的脚手架。

我的解决方案是基于现有脚手架通过命令生成electron项目

基于脚手架生成electron项目的优点:

  1. 用户使用自己熟悉的技术栈无成本使用
  2. 主要解决electron的一些配置问题,各种网络坑,配置坑,帮助新手能够开箱即用。
  3. 和脚手架分离,可以把精力放在electron的更新上面,放在electron的常用功能上面怎么让用户更简单更快的构建一个应用上面

我去年做了这个项目比如下面的文章 https://juejin.cn/post/7125252026232995870 @sorrycc @leftstick 目前这个仓库是在我的仓库作为一个提效手段,其中不止这个功能,如果需要可以在umi组织中单独建立一个仓库来做这个事情。

我的想法是在umi中开一个新项目,然后做这个工具

  1. 这个工具作为一个通用版,所有项目都可以使用
  2. 可以在umi中加一个命令,把umi项目快速转成electron项目

txp1035 avatar Jan 06 '23 05:01 txp1035

对于不建议做脚手架的建议,我是支持的。脚手架在 “多了个 electron”的问题上意义不大。

我更希望这个项目 就像它的名字的一样,是个 example, 或者是 reference。 我更倾向于 reference。 而且不是针对 视图层的 reference,能找到这里的基本都是 web 开发人员,没几个需要了解 web 如何开发; 而是针对 electron 部分。 这个部分,我觉得是很多 初涉 electron 的开发人员 最迫切了解的。

我们必须承认,github 上有不少不错的开源 electron 项目,但那些毕竟是“大、且复杂的”,如果从寻找“处理某一类问题的具体做法”的角度看,从大型开源项目里找 reference 是比较困难的。

所以我最初的目的是想把一些我自己经历的 electron 开发过程中的问题精炼成一个个示例在这个 repo 里,可以给其他朋友一些参考。

后期我希望(有精力的前提下),能把这个项目完善:

  • renderer 和 main process 之间通信的示例
  • main process 增加 native 依赖 如何打包的示例
  • URL Scheme的实现示例
  • 自定义工具栏的示例
  • 自定义状态栏 tray 的示例
  • 网络请求示例(我印象里从 renderer 里调用 api 会有一些问题需要特殊处理),这个也可以演示下该如何搞
  • 系统快捷键如何配置示例
  • 自动更新示例
  • 打包签名示例(这个我压根不会,也没有买了证书的apple 开发者账号可以测试,有待研究)
  • ....

后面我会在 readme 里把这些演示点 都列出来,然后 link 到具体涉及的代码位置,方便大家快速查阅

leftstick avatar Jan 06 '23 08:01 leftstick

所以我最初的目的是想把一些我自己经历的 electron 开发过程中的问题精炼成一个个示例在这个 repo 里,可以给其他朋友一些参考。

我觉得没有问题,你的想法是做一个例子,我的想法是帮助用户无成本接入electron,就像你买一杯咖啡不需要知道咖啡是怎么做的,给钱就能喝到味道出不错的咖啡。umi其实也是做的这么个事情,降低react开发的一个成本,让用户最少代码就能运行一个react项目,路由很多东西不让用户感知到,这样对初学者非常友好,如果你再深入了解,我们还提供了很多配置选择。我这个事情应该就是想要去帮助用户快速、简单的构建electron应用。有点类似antd pro使用命令生成组件的感觉,生成出来首先是保证能运行的,如果你有特殊自己的配置也可以自行更改的

从示例代码上来看,如果在一个仓库,对于初学者很难受,因为增加了很多功能导致main代码增多,初学者看起来会很难受,比如通信写哪儿些代码,需要哪儿些文件,如果是每一个示例一份代码的话示例的作用可能会大一点,杂在一起就不太容易起到示例的作用

txp1035 avatar Jan 06 '23 08:01 txp1035

从示例代码上来看,如果在一个仓库,对于初学者很难受,因为增加了很多功能导致main代码增多,初学者看起来会很难受,比如通信写哪儿些代码,需要哪儿些文件,如果是每一个示例一份代码的话示例的作用可能会大一点,杂在一起就不太容易起到示例的作用

对,这个需要在示例项目里规划好。 我初步想利用 路由把他们 控制在各自的目录下,UI 上给菜单,这样,从 UI 上就能快速看到自己需要的内容什么样子,找代码也会方便一些

leftstick avatar Jan 06 '23 10:01 leftstick

从这个PR里面学到了很多 感谢 @leftstick

diw1 avatar Mar 22 '23 13:03 diw1

@diw1 那说明这个 PR 还是有意义的,哈哈

leftstick avatar Mar 23 '23 05:03 leftstick