Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions docs/browse/v8WorkingPrinciple.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
editLink: false
---


# 编译器(Compiler)和 解释器(Interpreter)

编译型语言在程序执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次运行程序时,都可以直接运行该二进制文件,而不需要再次重新编译 c c++ Go等
Expand All @@ -10,8 +11,6 @@ editLink: false

![1720001190604](images/v8WorkingPrinciple/1720001190604.png)

**暂时无法在飞书文档外展示此内容**

1. 在编译型语言的编译过程中,编译器首先会依次对源代码进行词法分析、语法分析、生成抽象语法树、优化代码、最后生成处理器可执行的机器码。编译成功会生成一个可执行的文件。后续运行这个可执行的文件即可。
2. 在解释型语言的解释过程中,解释器会对源码依次进行词法分析、语法分析、生成抽象树,基于抽象树生成字节码,根据字节码执行程序,输出结果。

Expand Down Expand Up @@ -95,7 +94,7 @@ ESLint是一个用来检查javascript编写规范的插件,其检测流程也

回调函数没有在主函数内被调用——异步函数

系统调用栈的信息可以通过:chrom://tracing/来抓取
系统调用栈的信息可以通过:chrome://tracing/来抓取

# 宏任务 微任务
-宏任务:
Expand Down Expand Up @@ -257,14 +256,16 @@ console.log(3)

## 白屏优化(资源获取到后,渲染进程创建一个空白页面,解析白屏)
主要有:
- 解析HTMl
- 解析HTML
- 下载CSS
- 下载Javascript
- 生成CSSOM
- 执行Javascript
- 生成布局树
- 绘制页面

**主要体现在下载CSS文件、下载Javascript文件和执行Javascript**

解决方法:
- 通过内联Javascript、内联CSS来移除这两种类型的文件下载,这样获取到HTML文件之后就可以直接开始渲染流程
- 可以尽量减少文件的大小。通过webpack等工具移除一些不必要的注释,压缩Javascript文件
Expand Down Expand Up @@ -353,6 +354,7 @@ XSS主要有三种方式
## CSRF攻击
Cross-site request forgery 跨站请求伪造
CSRF攻击就是黑客利用了用户的登录状态,并通过第三方的站点来做一些事情

csrf与xss的不同,csrf攻击不需要将恶意代码注入用户页面,仅仅是利用服务器漏洞和用户的登录状态来实施攻击

### csrf攻击的三个必要条件:
Expand Down