mirror of
https://github.com/Estom/notes.git
synced 2026-02-03 18:44:19 +08:00
4.1 KiB
4.1 KiB
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部分:
-
用户界面(User Interface):用户所看到及与之交互的功能组件,如地址栏,返回,前进按钮等;
-
浏览器引擎(Browser engine):负责控制和管理下一级的渲染引擎;
-
渲染引擎(Rendering engine):负责解析用户请求的内容(如HTML或XML,渲染引擎会解析HTML或XML,以及相关CSS,然后返回解析后的内容);
-
网络(Networking):负责处理网络相关的事务,如HTTP请求等;
-
UI后端(UI backend):负责绘制提示框等浏览器组件,其底层使用的是操作系统的用户接口;
-
JavaScript解释器(JavaScript interpreter):负责解析和执行JavaScript代码;
-
数据存储(Data storage):负责持久存储诸如cookie和缓存等应用数据
浏览器渲染的过程
-
HTML解析出DOM Tree
-
CSS解析出Style Rules
-
将二者关联生成Render Tree
-
Layout 根据Render Tree计算每个节点的信息
-
Painting 根据计算好的信息绘制整个页面
浏览器解析过程
- 一个是HTML/SVG/XHTML,事实上,Webkit有三个C++的类对应这三类文档。解析这三种文件会产生一个DOM Tree。
- CSS,解析CSS会产生CSS规则树。
- Javascript,脚本,主要是通过DOM API和CSSOM API来操作DOM Tree和CSS Rule Tree.

