浏览器工作原理与实践
李兵
前盛大创新院高级研究员
立即订阅
6167 人已学习
课程目录
已完结 42 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题
免费
宏观视角下的浏览器 (6讲)
01 | Chrome架构:仅仅打开了1个页面,为什么有4个进程?
02 | TCP协议:如何保证页面文件能被完整送达浏览器?
03 | HTTP请求流程:为什么很多站点第二次打开速度会很快?
04 | 导航流程:从输入URL到页面展示,这中间发生了什么?
05 | 渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?
06 | 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
浏览器中的JavaScript执行机制 (5讲)
07 | 变量提升:JavaScript代码是按顺序执行的吗?
08 | 调用栈:为什么JavaScript代码会出现栈溢出?
09 | 块级作用域:var缺陷以及为什么要引入let和const?
10 | 作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?
11 | this:从JavaScript执行上下文的视角讲清楚this
V8工作原理 (3讲)
12 | 栈空间和堆空间:数据是如何存储的?
13 | 垃圾回收:垃圾数据是如何自动回收的?
14 | 编译器和解释器:V8是如何执行一段JavaScript代码的?
浏览器中的页面循环系统 (6讲)
15 | 消息队列和事件循环:页面是怎么“活”起来的?
16 | WebAPI:setTimeout是如何实现的?
17 | WebAPI:XMLHttpRequest是怎么实现的?
18 | 宏任务和微任务:不是所有任务都是一个待遇
19 | Promise:使用Promise,告别回调函数
20 | async/await:使用同步的方式去写异步代码
浏览器中的页面 (8讲)
21 | Chrome开发者工具:利用网络面板做性能分析
22 | DOM树:JavaScript是如何影响DOM树构建的?
23 | 渲染流水线:CSS如何影响首次加载时的白屏时间?
24 | 分层和合成机制:为什么CSS动画比JavaScript高效?
25 | 页面性能:如何系统地优化页面?
26 | 虚拟DOM:虚拟DOM和实际的DOM有何不同?
27 | 渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题?
28 | WebComponent:像搭积木一样构建Web应用
浏览器中的网络 (3讲)
29 | HTTP/1:HTTP性能优化
30|HTTP/2:如何提升网络速度?
31|HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络
浏览器安全 (5讲)
32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?
33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
34 | CSRF攻击:陌生链接不要随便点
35 | 安全沙箱:页面和系统之间的隔离墙
36 | HTTPS:让数据传输更安全
结束语 (1讲)
结束语 | 大道至简
课外加餐 (4讲)
加餐一|浏览上下文组:如何计算Chrome中渲染进程的个数?
加餐二|任务调度:有了setTimeOut,为什么还要使用rAF?
加餐三|加载阶段性能:使用Audits来优化Web性能
加餐四|页面性能工具:如何使用Performance?
浏览器工作原理与实践
登录|注册

结束语 | 大道至简

李兵 2019-10-29
你好,我是李兵。不知不觉中专栏已经更新完了,总的来说, 我写本专栏的过程是痛并快乐着。
觉得痛苦是因为写作期间每一天都能感受到多方的压力,完全没有放松的机会。在这过程中,阅读 Chromium 和 V8 的源代码占用了我大量的时间,因为有时候要验证文章的一些观点,或者找出一些知识点的实现逻辑,都需要通过阅读源代码来给出结论。V8 的源代码还算好读,但 Chromium 的源代码就过于复杂了,要看一个功能是怎么实现的就得查看几十个源文件,而且这些代码中充斥着大量的回调函数,大大增加了阅读代码的难度。
当然这个过程中,我也觉得是快乐的,因为通过本专栏我解锁了两件非常有挑战的技能。
第一件是写技术文章。通过本专栏,我对写技术文章有了比较系统性的方法论,也理解了写技术文章的核心就是用简单的语言讲清楚一个复杂的问题。不过要做好却并非易事,搞清楚目标群体、对这个领域有深刻的理解和洞见、组织好文章的层次结构……一样都不能少,只有这样才能做到有的放矢。
在专栏的写作过程中,我还发现了写文章和做项目的相通之处。我们知道通常做项目时需要首先确认核心需求,并快速交付一个最小可行产品,然后再根据实际的需求来迭代产品。
而在设计专栏目录时,我也有意识地将文章分为“搭建知识架构型”和“深入讲解单个知识点型”。“搭建知识架构型”文章的主要任务是将相互关联的知识点串成线、连成网,这类文章的核心任务就是做连接,但这过程中又会涉及到很多知识点,不过单个知识点是怎么工作的并不是核心,因此我会将这些细节性的知识点关进“黑盒”,你只需要了解“黑盒”起到的作用是什么就行了,并不需要关心其内部实现的细节。相反,在“深入讲解单个知识点型”这类文章中,我会拆解这些“黑盒”,并将一个个知识点分析透彻。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《浏览器工作原理与实践》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(37)

  • 宇宙全栈
    老师的文字质量非常高,阅读体验非常好。期待后续能推出新的作品。

    作者回复: 谢谢肯定,也感谢你一路的陪伴

    2019-10-29
    13
  • 一步
    感谢老师的付出,期待老师的加餐答疑,另外老师可以出个v8的专栏

    作者回复: 要结合v8讲会有点烧脑

    2019-10-29
    5
  • Been
    老师请教一个问题,写文档时,有个规范,英文单词与汉字混写时,前后都要留一个空格,我看你就是这样做的,不知道是通过手工还是格式化工具(什么工具。: ) )

    作者回复: 这个我们有刻意留空格,刚特意问了编辑MM,他说这个是极客时间的研发特地添加的功能。

    是用正则表达式把中英文匹配出来,在渲染的时候前后自动加上空格。

    这里也为极客时间研发点赞!

    2019-11-01
    4
  • 早起不吃虫
    意犹未尽啊,谢谢老师,希望后续出更多精品课程

    作者回复: 也你的感谢一路陪伴

    2019-10-29
    3
  • 阿桐
    恭喜老师专栏完美收官,等老师有时间了再开新专栏呀,一个专栏不过瘾

    作者回复: 慢慢来

    2019-10-30
    2
  • 新哥
    老师好,这门课程是目前在极客上学到最好的课程,非常感谢🙏 还有个小问题是 老师 用什么软件画图的,感觉很棒呢!

    作者回复: keynote。用的基本也都是keynote自带的素材

    2019-10-29
    2
  • code-artist
    谢谢李老师带来精彩的专栏。老师这几个月来是专心做这一件事,还是同时在工作?

    作者回复: 这期间、公司的事情有时候要打理下,大部分时间都贡献给这个专栏了。

    2019-10-29
    2
  • Will
    谢谢老师,麻烦老师讲解一下Promise那一节的思考题,个人感觉还不是很理解

    作者回复: 嗯。这个我看看你后面以什么形式来补充下

    2019-10-29
    2
  • 潮汐
    终于跟完了。算是跟进度比较准时的一个专栏了,因为自己是一个前端,所以对前端知识还是更能理解和学习。从专栏对前端、浏览器等有更总体全局的认识,对一些js执行原理也能更深层次理解。虽然学习过程没有太多深入研究,比较粗略的过,以后有时间或者遇到问题起码可以来专栏看看详细知识。
    感谢老师的专栏!期待后续新的作品!

    作者回复: 加油

    2019-10-30
    1
  • 天之兰
    感谢李老师的细致讲解和深入的分析,让我对浏览器有了新的认识,同时也学习了技术文章的写作思路。
    2019-12-10
  • Geek_East
    这篇文章绝对是进阶高端开发的必备,很细致,很有功力
    2019-11-27
  • houqx
    各位好,问个跟本课程没太多关系的问题。ajax请求(我其实是用的axios) 接口返回了302重定向,并且Location也有正确的值,但是浏览器没有跳转到新的页面。
    查了资料说,ajax请求是不支持302重定向的,请问是这样吗?
    跪求专业解析。
    2019-11-23
    1
  • Geek_d36e4b
    最最感谢的是老师让我彻底明白了以前一知半解的事件循环模型

    作者回复: 赞

    2019-11-19
  • aprilday
    几乎所有文章都看了不止一遍,收获非常非常大,目前为止买了17个课程,这个专栏对我的帮助是最大的,非常感谢!
    2019-11-14
  • 新哥
    老师好,想问下ChromeDevTools/devtools-frontend这个项目 如何构建啊,现在想做我们自己的调试器,直接使用这个的构建结果,感谢🙏

    作者回复: devtools也是采用web来构建的,不过用了很多浏览器内部提供的专有接口,这些接口你拿不到的

    2019-11-12
  • 大树
    老师专栏阅读收听体验,个人词穷只能 简单用一个“爽” 形容,个人一口气 看完第一篇专栏的所有文章 。老师会有其他课程出品吗?在这之前其他渠道公开的博客文章?
    2019-11-06
  • 西麦
    感谢老师,写得太好了,图 + 文字 + 代码 的结合,十分易懂
    想问一下老师作图的软件是什么?
    2019-11-05
  • gigot
    催更了,期待老师的答疑。加油!
    2019-11-05
  • 郝仁杰
    总结的很到位,老师辛苦!
    2019-11-05
  • HB
    物有所值!感谢老师,学到很多。
    2019-11-05
收起评论
37
返回
顶部