Electron技术架构:
本质是操作系统去进行交互
Chormium 支持最新特性的浏览器
一个具备了最新功能的chrome浏览器,在它的内部去大量的使用es6,es7以及浏览器所支持的一些新的语法特性,利用html和css(web技术)来定制软件界面 自定义当前界面的展示样式
Node.js JavaScript运行时,可实现文件读写等以及本地命令的调用和执行等等操作
具备强大的生态圈,带来第三方扩展以及使用功能稳定的模块,对文件进行读写操作
Native apis 提供统一的原生界面能力
提供这样一个统一原生的界面操作能力,可以让我们直接与操作系统去进行通信,例如调出操作系统的系统通知,做一些快捷键,获取底层硬件的设备信息等等
Electron集成了Chormium与Node.js,是一个实时的框架,将Chormium和Node.js整合到一个运行环境当中,去实现一个跨平台、兼容性极好的桌面应用
Electron工作流程:
桌面应用是运行在不同操作系统上的一款软件,软件中的功能实现都是通过Native api去跟操作系统进行相应的交互
Electron的进程主要分为两类:主进程,渲染进程
Electron的内部提供了IPC和RPC的通信机制,通信行为:封装成IPCmain和IPCrender模块,通过模块再去调用相应的方法,可以去实现不同窗口间的数据传输
主进程
- 可以看做是 package.json 中 main 属性对应的文件
- 一个应用只会有一个主进程(在它里边也包含了chromium与nodejs的运行时环境)
- 只有主进程可以进行GUI的API操作(调用的Native api)
如果说某个渲染进程他也想去操作原生的api,就需要先去和主进程呢建立通信,还是由主进程来完成具体的调用,之后的话再去通过主进程把这个结果传递回给渲染进程 - 主进程是可以管理所有的web界面,和这些web界面所对应的渲染进程的
渲染进程
- Windows 中展示的界面通过渲染进程表现(它的核心功能就是渲染web界面,可以去支持所有的dom操作,以及node api的调用操作)
- 一个应用可以有多个渲染进程
- 渲染进程也能够去通过主进程来访问原生的api,只不过要先去跟主进程建立通信
Electron生命周期:
生命周期事件
ready:app初始化完成 他会在electron完成初始化操作的时候被触发一次,由app对象来进行调用的,监听的目的一般是用于执行加载窗口的初始化操作,createWindow
dom-ready:一个窗口中的文本加载完成,可以去执行后续的dom操作,选择界面上的元素,由webContent对象来进行调用,
did-finsh-load:导航完成时触发,也就是选项卡的旋转器停止旋转的时候,并且指派了unload事件,由webContent对象来进行调用,
window-all-closed:所有窗口都被关闭时触发,如果没有监听这个事件,当所有的窗口都关闭的时候,应用程序就会默认的去执行退出操作,如果监听这个事件,就需要我们自己主动来决定是否将当前的app应用程序退出 注意:如果此时没有去在它里面执行退出操作,那么后续的before-quit,will-quit,quit就相当于是失效了
before-quit:在关闭窗口之前触发
will-quit:在窗口关闭并且应用退出时触发
quit:当所有窗口被关闭时触发
closed:当窗口关闭时触发,此时应删除窗口引用,之后保存窗口对象的实例就被回收了,将之前保存窗体的对象引用去进行删除
nodemon监控文件修改 nodemon是一个npm下载的全局依赖,可以在终端执行js文件,每次更改文件代码会热更新