Open YoungWat opened 4 years ago
// main.js const { BrowserWindow, app } = require("electron") app.on("ready", () => { const bw = new BrowserWindow() bw.loadURL("https://www.mengtuiapp.com/#/") })
每个 Electron 中的 web 页面运行在它的叫渲染进程的进程中。 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些底层交互。
主进程使用 BrowserWindow 实例创建页面。 每个 BrowserWindow 实例都在自己的渲染进程里运行页面。 当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。
https://www.electronjs.org/docs/api/ipc-main https://www.electronjs.org/docs/api/ipc-renderer
https://www.electronjs.org/docs/api/remote
Electron同时对主进程和渲染进程暴露了Node.js 所有的接口 https://www.electronjs.org/docs/tutorial/application-architecture#using-nodejs-apis
壳工具主要功能
https://www.electronjs.org/docs/api/ipc-renderer https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
remote 重构 https://www.electronjs.org/docs/api/remote#remote
http://git.innotechx.com/projects/X/repos/pt-fe-aegis/commits/56024dde5d3befccfd7eaf2c88a6a11daab141fe
// 注册 __electronBridge__.registerScreenshots((res)=>{console.log("res ",res)})
// 调用 electronBridge.screenshots()
###### 原理 ![](https://user-gold-cdn.xitu.io/2020/5/26/1724f04e695be76f?w=1197&h=638&f=png&s=85316 "截图工具原理") https://juejin.im/post/5bbac5cee51d450e7042ad2c ###### 主进程 * 创建窗口,加载html * 通知渲染进程 截图,重设,关闭等 ###### 渲染进程 * desktopCapturer.getSources 截图 * canvas 截图编辑 * 发送图片base64给主进程 <!-- * 1、创建全屏透明窗口,设置不显示鼠标 * 2、获取屏幕截图 desktopCapturer * 3、屏幕图片做背景,绘制区域 --> ##### 浮窗组件 ![](https://user-gold-cdn.xitu.io/2020/5/26/1724f04d4d558af6?w=1439&h=899&f=png&s=495938 "浮窗组件") ###### 使用 ```js __electronBridge__.sendNotification({title:"title-test",body:"<body><h2 style='background:red;color:white'>"+Date.now()+"</h2></body>"})
https://blog.csdn.net/weixin_33936401/article/details/88722952 https://www.electron.build/
https://github.com/electron/electron-packager
https://baike.baidu.com/item/OpenSSH/1137789?fr=aladdin
https://baike.baidu.com/item/Jenkins/10917210?fr=aladdin
http://10.105.40.88:8080/
https://www.npmjs.com/package/http-server
http://10.105.40.88:9999/
rewrite config.js
Electron-萌推IM PC客户端分享
一、Electron
1.1、简介
1.2、主进程
1.3、渲染进程
每个 Electron 中的 web 页面运行在它的叫渲染进程的进程中。 Electron 的用户在 Node.js 的 API 支持下可以在页面中和操作系统进行一些底层交互。
主进程使用 BrowserWindow 实例创建页面。 每个 BrowserWindow 实例都在自己的渲染进程里运行页面。 当一个 BrowserWindow 实例被销毁后,相应的渲染进程也会被终止。
1.3 主进程和渲染进程通信
1.3.1、 ipcMain 和 ipcRenderer(异步)
https://www.electronjs.org/docs/api/ipc-main https://www.electronjs.org/docs/api/ipc-renderer
1.3.2、 remote(同步)
https://www.electronjs.org/docs/api/remote
1.4、使用Electron API,Node API
Electron同时对主进程和渲染进程暴露了Node.js 所有的接口 https://www.electronjs.org/docs/tutorial/application-architecture#using-nodejs-apis
1.5、壳工具功能分析
壳工具主要功能
1.5.1、代码结构
1.5.2、bridge.js
index.js
method_map.js
method_manager.js(即将废弃)
https://www.electronjs.org/docs/api/ipc-renderer https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
remote 重构 https://www.electronjs.org/docs/api/remote#remote
http://git.innotechx.com/projects/X/repos/pt-fe-aegis/commits/56024dde5d3befccfd7eaf2c88a6a11daab141fe
1.5.3、复制粘贴功能
图片的复制
1.5.4、壳工具“组件”,主进程和html的组合
截图组件
使用
// 调用 electronBridge.screenshots()
原理
主进程
渲染进程
1.5.5、壳工具主要的Electron接口
托盘及托盘菜单,任务栏闪动
二、打包和构建
2.1、简介
2.2、app打包
2.2.1、electron-builder vs electron-packager+*
https://blog.csdn.net/weixin_33936401/article/details/88722952 https://www.electron.build/
https://github.com/electron/electron-packager
2.2.2、pack.js
electron-packager 生成可执行文件
electron-installer-dmg,innosetup-compiler-cn 生成安装包,测试环境zip包
2.2.3、测试环境包,调试包处理
2.2.4、build-changelog.js,Changelog及版本管理脚本
2.3、 bridge.js
三、打包server
3.1、简介
3.2、openSSH
https://baike.baidu.com/item/OpenSSH/1137789?fr=aladdin
3.3、远程桌面
3.4、jenkins
https://baike.baidu.com/item/Jenkins/10917210?fr=aladdin
http://10.105.40.88:8080/
3.5、http-server
https://www.npmjs.com/package/http-server
http://10.105.40.88:9999/
3.6、clear-old-file.js
四、部分问题和解决方案总结
InnoSetup中文界面,命令行打包
windows区域选取卡顿
electron-packager打测试包,debug包
rewrite config.js
五、展望