umi-example-electron
umi-example-electron copied to clipboard
refactor with Umi@4 and electron@22
Brand new example for electron
其实我不太建议electron去做脚手架的例子,实际使用更多是把现有的web脚手架改成electron的项目。
不建议electron做脚手架的原因:
- 不管是react还是vue都有成熟的脚手架
- 用户也更熟悉自己常用的脚手架
- 如果按照现有的脚手架改加上electron元素感觉会重复,然后改一个地方的脚手架还要同步更新另一个地方的脚手架。
我的解决方案是基于现有脚手架通过命令生成electron项目
基于脚手架生成electron项目的优点:
- 用户使用自己熟悉的技术栈无成本使用
- 主要解决electron的一些配置问题,各种网络坑,配置坑,帮助新手能够开箱即用。
- 和脚手架分离,可以把精力放在electron的更新上面,放在electron的常用功能上面怎么让用户更简单更快的构建一个应用上面
我去年做了这个项目比如下面的文章 https://juejin.cn/post/7125252026232995870 @sorrycc @leftstick 目前这个仓库是在我的仓库作为一个提效手段,其中不止这个功能,如果需要可以在umi组织中单独建立一个仓库来做这个事情。
我的想法是在umi中开一个新项目,然后做这个工具
- 这个工具作为一个通用版,所有项目都可以使用
- 可以在umi中加一个命令,把umi项目快速转成electron项目
对于不建议做脚手架的建议,我是支持的。脚手架在 “多了个 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 到具体涉及的代码位置,方便大家快速查阅
所以我最初的目的是想把一些我自己经历的 electron 开发过程中的问题精炼成一个个示例在这个 repo 里,可以给其他朋友一些参考。
我觉得没有问题,你的想法是做一个例子,我的想法是帮助用户无成本接入electron,就像你买一杯咖啡不需要知道咖啡是怎么做的,给钱就能喝到味道出不错的咖啡。umi其实也是做的这么个事情,降低react开发的一个成本,让用户最少代码就能运行一个react项目,路由很多东西不让用户感知到,这样对初学者非常友好,如果你再深入了解,我们还提供了很多配置选择。我这个事情应该就是想要去帮助用户快速、简单的构建electron应用。有点类似antd pro使用命令生成组件的感觉,生成出来首先是保证能运行的,如果你有特殊自己的配置也可以自行更改的
从示例代码上来看,如果在一个仓库,对于初学者很难受,因为增加了很多功能导致main代码增多,初学者看起来会很难受,比如通信写哪儿些代码,需要哪儿些文件,如果是每一个示例一份代码的话示例的作用可能会大一点,杂在一起就不太容易起到示例的作用
从示例代码上来看,如果在一个仓库,对于初学者很难受,因为增加了很多功能导致main代码增多,初学者看起来会很难受,比如通信写哪儿些代码,需要哪儿些文件,如果是每一个示例一份代码的话示例的作用可能会大一点,杂在一起就不太容易起到示例的作用
对,这个需要在示例项目里规划好。 我初步想利用 路由把他们 控制在各自的目录下,UI 上给菜单,这样,从 UI 上就能快速看到自己需要的内容什么样子,找代码也会方便一些
从这个PR里面学到了很多 感谢 @leftstick
@diw1 那说明这个 PR 还是有意义的,哈哈