mengtuifrontend / Blog

芦叶满汀洲,寒沙带浅流。二十年重过南楼。柳下系船犹未稳,能几日,又中秋。 黄鹤断矶头,故人今在否?旧江山浑是新愁。欲买桂花同载酒,终不似,少年游。
18 stars 5 forks source link

Electron-萌推IM PC客户端分享 #36

Open YoungWat opened 4 years ago

YoungWat commented 4 years ago

Electron-萌推IM PC客户端分享

一、Electron

1.1、简介

// main.js
const { BrowserWindow, app } = require("electron")

app.on("ready", () => {
  const bw = new BrowserWindow()
  bw.loadURL("https://www.mengtuiapp.com/#/")
})

1.2、主进程

主进程使用 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、壳工具功能分析

壳工具主要功能

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、复制粘贴功能

图片的复制

// 调用 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>"})
原理
主进程

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及版本管理脚本

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中文界面,命令行打包