docs: fishhook 底层原理

This commit is contained in:
杭城小刘
2020-08-10 20:16:18 +08:00
parent 4c6ccac464
commit 9fd9df9337
21 changed files with 10583 additions and 1168 deletions

View File

@@ -13,7 +13,11 @@
React 性能高效的一个原因就是 Virtual Dom 的应用和 diff 之后的 Batch Update批量处理类比 Vue 中的 $nextTick。有 Native 开发经验的同学对于这里应该有似曾相识的感觉,和 RunLoop 很像。任何 UI 层变动的东西提交给系统,系统再下一次的运行循环到来的时候统一去渲染。)
- https://www.infoq.cn/article/2iviqjklwa4JkF0YNQGZ
- https://www.infoq.cn/article/AiQMbjI0oXZ1UrueiBze
## Diff 算法
@@ -235,4 +239,3 @@ class Welcome extends React.Component {
- Vue 设计思想How easy it can be。ReactHow corrct it can be 和 all in jscss写法也在用 js 控制,比如 styled-component

View File

@@ -88,7 +88,8 @@ app.on('activate', function () {
app 对象在 `whenReady` 的时候执行 createWindow 方法。内部创建了一个 `BrowserWindow` 对象,指定了大小和功能设置。
1. webPreferences Object (可选) - 网页功能的设置。
1. webPreferences Object (可选) - 网页功能的设置。
2. preload String (可选) - 在页面运行其他脚本之前预先加载指定的脚本 无论页面是否集成 Node, 此脚本都可以访问所有 Node API 脚本路径为文件的绝对路径。 当 node integration 关闭时, 预加载的脚本将从全局范围重新引入 node 的全局引用标志。
`mainWindow.loadFile('index.html')` 加载了同级目录下的 index.html 文件。也可以加载服务器资源(部署好的网页),比如 `win.loadURL('https://github.com/FantasticLBP')`
@@ -143,7 +144,7 @@ electron 分为**渲染进程和主进程**。和 Native 中的概念不一样
- 问题1: 不稳定
早期浏览器需要借助插件来实现类似 Web 视频、Web 游戏等各种“强大”的功能。但插件往往是最容易出现问题的模块。此外因为运行在浏览器进程中,所以一个插件的意外奔溃到导致整个浏览器到的奔溃。
早期浏览器需要借助插件来实现类似 Web 视频、Web 游戏等各种“强大”的功能。但插件往往是最容易出现问题的模块。因为运行在浏览器进程中,所以一个插件的意外奔溃到导致整个浏览器到的奔溃。
除了插件之外,**渲染引擎模块也是不稳定的**。通常一些复杂的 Javascript 代码就有可能导致渲染引擎模块的奔溃。和插件一样,渲染引擎的奔溃会导致整个浏览器奔溃。
@@ -184,8 +185,6 @@ electron 分为**渲染进程和主进程**。和 Native 中的概念不一样
对于**内存泄漏的解决办法更加简单**。当关闭某个页面的时候,整个渲染进程就会被关闭,所以该进程所占用的内存都会被系统回收,于是轻松解决了浏览器页面的内存泄漏问题。
**解决了安全问题。**采用多进程架构可以使用**安全沙箱技术**。沙箱可以看成是操作系统给浏览器一个小黑盒黑盒内部可以执行程序但是不能访问操作系统资源、不能访问硬盘数据也不能在敏感位置读取任何数据例如你的文档和桌面。Chrome 把插件进程和渲染进程使用沙箱隔离起来,这样即使在渲染进程或者浏览器进程中执行了恶意代码,恶意代码也无法突破沙箱限制去获取系统权限。
沙箱隔离起来的进程必须使用 IPC 通道才可以与浏览器内核进程通信,通信进程就会进行安全的检查。