2021-08-21-补记Wiznote Lite开源代码阅读相关内容-4-Wiznote Lite框架和重要操作执行流程

1、整体结构-两部分组成

大概可以认为,src/web实现的react前端,实际上只提供登录、编辑器、各类功能按键等页面功能,提供前端;src/main/实现的electron实际上实现各类按键、登录、编辑保存、同步等后续实际工作,提供后台,而最终的功能api由node_modules/wiznote-sdk-js提供(部分html与markdown转化的api由node_modules/wiznote-sdk-js-share提供)。

总结

react部分:
开发命令行调试:[src/index.js, public/index.html, public/, src/serviceWorker.js], config-overrides.js, src/web/
编译打包后:[web-app/], src/web/

electron部分:
开发命令行调试:src/start-react.js(仅在开发时使用),src/start.js,src/main/ main.js, src/main/, src/web/preload.js
编译打包后:src/start.js,src/main/ main.js, src/main/, src/web/preload.js

react部分在编译后为web/app
image
image
image

react部分通过build命令根据config-override.js生成web-app目录,这样开发时需要读取端口与react部分代码交互调试,打包后便不需要,可以直接使用本地web-app内的内容。

打包后在out目录下
image
image

electron-builder根据package.json中的build条目,生成out目录,包含最终打包的产物WizNote Lite-2.1.3.AppImage,以及打包的内容linux-unpacked。可以看到最终需要打包的资源包括src和web-app,与原始src相比,start-react.js不再被需要(这个文件仅用于开发调试时增加设定url),serviceWorker.js也没有了(这部分没仔细看)。

2、两部分交互方式

只包含ipcRenderer.invoke到ipcMain.handle的。

electron部分在src/main/main.js中加载src/web/preload.js,在preload.js中,提前设定window.wizApi接口供src/web中的函数使用
preload.js中设定的wizApi最终使用ipcRenderer.invoke来处理,实际上是通知给ipcMain.handle处理。
ipcRenderer.invokeipcMain.handle是electron进程间通信的方式,前者是渲染进程通知,后者是主进程处理(参考electron进程间通信 )。

ipcMain.handle在src/main/api.js中实现,每个handleApi调用wiznote-sdk-js中的代码实现其功能。api.js应该是包含了所有功能处理的函数接口,包括付款的功能。

还存在一个疑惑:api.js的代码是怎么嵌入的?唯一看到引用该代码的部分是在main.js中调用require('./api'),而这些函数都未export出去,是咋回事啊?为啥起到作用了啊?需要继续学习。。。

其他通信未深究。

ipcRenderer.invoke

src/main/main.js:
image
preload.js:
image
image
image
image
ipcMain.handle:
src/main/main.js:
image
image

这里的消息未深究。但显然还有sdk.emitEvent还有发送消息。

posted @ 2021-08-21 15:07  日光散林间  阅读(31)  评论(0编辑  收藏  举报