先吐槽一下吧: 我本来是做 C++客户端开发的,公司之前一直是用的 Qt/Duilib+CEF 的模式开发客户端,一直平安无事,可能过于无事了吧,最近的一个产品想着用一些现在热门的 Electron ,一方面和前沿技术对接,另一方面也可以让前端来分担一部分客户端的开发工作,比如本地配置、文件下载这些。
但实际开发中才发现公司的前端开发对客户端和系统方面的知识实在是太匮乏了,比如不知道什么是任务栏和系统托盘、文件路径和目录也分不清,主进程各种 js 异常满天飞,客户端咔咔崩溃......Electron 和 vue 结合也是一堆的坑。但既然已经选择了这个方案,也不能中途换方案,没办法,我只能硬着头皮学 Electron 和 vue 了,让前端专注写 Vue 页面部分,我写 Node.js 和 Electron 部分,项目总算坎坷的上线了,寄希望于后面慢慢重构吧。
基于上面的教训,在项目开发完之后,我写了个 Electron 模板,争取后面的项目直接基于这个模板能够让前端平稳的参与进来,尽量抹平 web 开发和客户端开发之间的差异吧。
大家可以看看我的模板,多提意见,谢谢
1
wangtian2020 249 天前
webPreferences: {
nodeIntegration: true, contextIsolation: false, webSecurity: false, } ipc 通信脱裤子放屁,直接在渲染进程写 node 代码 |
2
dx123 249 天前
emmm ,虽然不懂,但还是想问,为啥产品能决定技术栈····或者说产品关心技术栈实现
|
3
mioktiar56 OP @wangtian2020 只能说你是懂一点的,但懂的不多
|
4
irisShaw 249 天前 1
最怕这种懂一点,懂得不多的,但能拍板做决定的人。。。
|
6
DesnLee 249 天前
我是用 vite react electron
这玩意包是真大,有点烦 |
7
zjsxwc 249 天前
不喜欢 ts ,喜欢 js
不喜欢 vue 虚拟 dom ,喜欢 svelte 原生 dom |
8
ljsh093 249 天前
@wangtian2020 #1 哥,这么搞页面不卡吗
|
9
ljsh093 249 天前
感谢分享,我直接一个 fork
|
10
afxcn 249 天前
用什么技术不是关键,人才是关键。
精通 Electron 的人,用 Electron 会很爽;如果不熟悉 Electron 非要用,那就爽不了。 |
11
wjx0912 249 天前
支持 ts 。现在团队用的 jsdoc 非常痛苦。撸外快用的 ts 就省事多了。
通信的话,要么不封装,要么更进一步?( service ,controller ) 要是想做个开箱即用的,可以考虑加入 pinia, elementplus, i18n 啥的? |
12
BlackHole1 249 天前
已 Star 。支持 NSIS 很 Nice ,有兴趣给 Electron Forge 提交支持 NSIS 的 feat PR 么?
|
13
asdhak 249 天前
|
14
someios 249 天前
我们甲方不让用 nodeIntegration: true ,网络请求都放在 nodejs 来处理的
|
15
wangtian2020 249 天前
@ljsh093 我用的全是 promise 的接口一个同步 nodejs api 的都不用 ,为什么会觉得卡。觉得卡就是写代码的人技术水平不行
|
16
ljsh093 249 天前
@wangtian2020 #15 除非起 worker 不然都是单线程,会影响渲染性能
|
17
wangtian2020 249 天前
@ljsh093 JavaScript 单线程异步的含义就是有回调就干活,没活就该渲染渲染。不会影响性能,只有用同步的 nodejs api 才会卡住
我只用```import fs from 'fs' fs.promises.下的异步 API```凭什么卡。 不懂不会写别瞎说 |
18
duan602728596 249 天前
我也是直接在渲染进程写 node 代码。
node require 在渲染进程会影响 page 的初始化,我靠自己写的 babel 插件来解决的这个问题。 |
19
Jirajine 249 天前
直接 nodeintegration 没毛病,想想用 electron 是为了什么。
|
20
NormanGhost 249 天前 via Android
我们公司也是 electron 技术栈,来公司一年后我一个前端也能用 c++写 node addon 集成算法同事的静态,动态库了。写 electron 最起码要有 node 基础,懂后端 客户端基础知识的。不能只懂前端
|
21
jianchang512 249 天前 via Android
Electron-Egg.
不考虑这个吗,感觉用起来更简单 |
23
flyqie 249 天前
|
24
linuxsteam 249 天前 via iPhone
写 qt 的写这玩意太简单了
|
25
mioktiar56 OP @asdhak 这个项目我看了,有点用前端是思维在做客户端,比如它用的 vue 单页面,客户端通常是多窗口的,这种会导致每个客户端窗口不独立,窗口会加载一些不必要的东西。
只是我的一点看法 |
26
mioktiar56 OP @DesnLee 我试过最新版的 Electron ,可以打包压缩到 55M 左右。如果太大了,你看看是不是 node_modules 里面有太多非主进程需要的东西。理论上 vue 前端项目 build 之后,node_modules 里面的依赖都不需要了
|
28
mioktiar56 OP @horizon 产品经理要求这个产品用 xx 技术
|
29
horizon 244 天前
@mioktiar56 #28
那你这有点离谱了 |
30
mioktiar56 OP @horizon 产品说他大学是学的计算机,和老板一顿吹,于是.......
|