Files
notes_estom/NodeJS/12Electron.md
yinkanglong 8e33c4d911 electron
2020-09-13 23:20:31 +08:00

66 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## electron
> 使用网页技术开发桌面应用。
* electron提供了一系列本地应用的框架主要包括桌面图标、桌面菜单等本地应用独有的部分。
* 界面显示的部分由electron提供运行环境。
* 界面显示的功能主要由nodejs实现。所以本质上还是使用nodejs
## 逻辑说明
* 在web技术当中分为前端和后端。前端通过HTML、CSS、JavaScript实现页面的动态变化。
* 后端使用nodejs处理数据将数据渲染到页面并返回新的页面。
* 前端和后端通过url脚本进行通信。nodejs的脚本不能在前端执行。
* nodejs是JavaScript的一个扩展库使得JavaScript能做到更多的本地数据处理从而成为可以在服务器端运行通过虚拟的V8处理器访问服务器资源。
* Node.js是一个事件驱动I/O服务端JavaScript环境基于Google的V8引擎V8引擎执行Javascript的速度非常快性能非常好。Node.js使用JavaScript进行编程运行在JavaScript引擎上V8
* 前端JavaScript主要参与页面响应通过接口API向后端请求数据。
* 后端nodejs主要参与访问服务器资源进行业务逻辑并形成接口API。
## electron
* electron允许使用web页面创建单机应用。electron与web开发的逻辑完全不同。web开发区分前后端前后端通过URL-api通信。前端只负责页面变化后端只负责数据处理。但在electron并不区分前后端主要借鉴了JavaScript语言和nodejs平台分为主线程和渲染线程。主线程由electron提供负责单机GUI相关功能的实现例如app主程序、browserwindow窗口、窗口菜单、窗口内容webcontent等内容渲染线程主要由JavaScript和nodejs实现相当于原来的前端+后端,包括后端的数据处理和前端的页面变化。
* 因为electron运行在nodejs环境当中而不是浏览器环境当中。所以能运行nodejs脚本。
* electron不分前后端只有GUI图形界面和JavaScript的逻辑处理两部分组成。
* electron主要包括两个进程
* 主进程GUI进程。负责控制图形界面的进程。通过app和browserwindow模块来处理GUI相关的事件。
* 渲染进程web进程。负责渲染html页面处理web事件。通过前端的js和后端的nodejs获取数据、处理数据、渲染数据到页面同时实现前端的动态变化。
* electron支持两类事件的处理
* GUI事件。由electron的内建对象产生并处理控制整个app的进程处理图形界面事件。
* web事件。由普通的JavaScript+nodejs脚本处理同时完成原来在前端和后端的处理过程。
## 浏览起的主要功能
浏览器基础结构主要包括如下7部分
1. 用户界面User Interface:用户所看到及与之交互的功能组件,如地址栏,返回,前进按钮等;
2. 浏览器引擎Browser engine:负责控制和管理下一级的渲染引擎;
3. 渲染引擎Rendering engine:负责解析用户请求的内容如HTML或XML渲染引擎会解析HTML或XML以及相关CSS然后返回解析后的内容
4. 网络Networking:负责处理网络相关的事务如HTTP请求等
5. UI后端UI backend:负责绘制提示框等浏览器组件,其底层使用的是操作系统的用户接口;
6. JavaScript解释器JavaScript interpreter:负责解析和执行JavaScript代码
7. 数据存储Data storage:负责持久存储诸如cookie和缓存等应用数据
## 浏览器渲染的过程
![](img/webrender.png)
1. HTML解析出DOM Tree
2. CSS解析出Style Rules
3. 将二者关联生成Render Tree
4. Layout 根据Render Tree计算每个节点的信息
5. Painting 根据计算好的信息绘制整个页面
## 浏览器解析过程
![](img/webparse.jpg)
* 一个是HTML/SVG/XHTML事实上Webkit有三个C++的类对应这三类文档。解析这三种文件会产生一个DOM Tree。
* CSS解析CSS会产生CSS规则树。
* Javascript脚本主要是通过DOM API和CSSOM API来操作DOM Tree和CSS Rule Tree.