浏览器工作原理与实践--极客时间课程推荐/优惠
版权声明
本站非极客时间官网,与官方无任何关系。我们不提供课程下载或详细内容,仅作为课程分享和推荐平台。我们鼓励大家支持正版,尊重创作者的劳动成果,这样不仅能帮助创作者持续产出优质内容,也能让自己获得更好的学习体验。请通过官方渠道购买和学习课程,感谢您的理解与支持。
课程详情
你将获得:
- 前端性能优化的底层逻辑;
- 浏览器页面渲染的核心流程;
- JavaScript 运行机制解析;
- 浏览器网络及安全机制解析。
课程介绍
浏览器是上网的入口,是互联网的“咽喉”。我们每天的工作、学习和娱乐等都离不开浏览器,各行各业、越来越多的应用也都依赖于此,特别是随着云计算的普及和HTML5技术的快速发展,它的重要性更是与日俱增。
为了能准确评估Web开发项目的可行性,站在更高维度审视页面,以及在快节奏的前端技术迭代中把握住问题的本质,完成前端技能进阶,学习浏览器的工作原理就势在必行了。
特别是前端技术出现了大爆炸式增长,各种新技术层出不穷,为了避免疲于应付,你可以通过学习浏览器的工作原理,掌握前端知识的本源,以不变应万变。
为便于你快速对浏览器有个宏观的把控,李兵和极客时间团队专门做了一个小视频“工程师视角下的浏览器是怎样的”:
在这门讲解浏览器工作原理的课程中,李兵会用深入浅出的讲解方式、图文并茂的展现形式,把网络、页面渲染、JavaScript、浏览器安全等知识串联起来,从而让你高质量、高效率地学习这门课程,系统掌握浏览器工作原理,并同时把理论应用到前端实践中去。
模块介绍
本课程共分为7大模块。
1. 宏观视角下的浏览器
本模块通过Chrome的多进程架构来介绍HTTP请求流程、导航流程和页面的渲染流程,带你从宏观视角建立浏览器的知识体系。
2. 浏览器中的JavaScript执行机制
虽然语法上和C语言很像,但是JavaScript背后的机制却又完全不同,很多人学习JavaScript时经常处于似懂非懂的状态。本模块则是站在浏览器的视角,来分析JavaScript代码的执行过程。如果你能掌握这些执行过程,那么很多诸如闭包、变量提升等疑难问题就会迎刃而解。
3. V8工作原理
继续深入探讨来自Google的JavaScript引擎V8,分析其执行流程,细化讲解JavaScript中数据是如何存储和回收的。通过本模块的学习,你离打造高性能且节约内存的Web应用就更近一步了。
4. 浏览器中的页面事件循环系统
要让不同类型的任务在主线程中有条不紊地执行,这就需要有一个事件循环系统,用来负责接收、调度这些不同的事件。本模块会深入探讨Web页面中的事件循环系统,讲解页面中的微任务和宏任务的实现机制,最后还会介绍一些WebAPI是如何与页面的事件循环系统结合使用的。理解事件循环,能让你从更高维度理解页面是如何运行的,并加深你对页面中异步事件的理解。
5. 浏览器中的页面
页面是浏览器的核心,浏览器中的所有功能点都是服务于页面的。本模块会对页面做全面的介绍,包括构建页面的核心流程、页面性能的分析过程。最后还会介绍一些应用场景,比如流行的前端框架为什么要有虚拟DOM,最近比较火的PWA的工作原理,以及WebComponent。
6. 浏览器中的网络
网络的重要性毋庸置疑,但是很多前端工程师却往往忽视它的存在。本模块通过HTTP/1、HTTP/2和HTTP/3的介绍,让你全面了解浏览器中的网络,并最终让你能向下理解其底层原理、向上理解其应用方向。
7. 浏览器安全
和浏览器打交道的内容都是通过网络进行的,但通常通过网络传输的内容是不被浏览器信任的,所以对于可能存在危险的地方都要重点防护。本模块会通过实例,向你介绍为何会出现各种安全问题,以及如何避免这些安全攻击。
课程目录
开篇词
- 开篇词 | 参透了浏览器的工作原理,你就能解决80%的前端难题
宏观视角下的浏览器
- 01 | Chrome架构:仅仅打开了1个页面,为什么有4个进程?
- 02 | TCP协议:如何保证页面文件能被完整送达浏览器?
- 03 | HTTP请求流程:为什么很多站点第二次打开速度会很快?
- 04 | 导航流程:从输入URL到页面展示,这中间发生了什么?
- 05 | 渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的?
- 06 | 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?
浏览器中的JavaScript执行机制
- 07 | 变量提升:JavaScript代码是按顺序执行的吗?
- 08 | 调用栈:为什么JavaScript代码会出现栈溢出?
- 09 | 块级作用域:var缺陷以及为什么要引入let和const?
- 10 | 作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?
- 11 | this:从JavaScript执行上下文的视角讲清楚this
V8工作原理
- 12 | 栈空间和堆空间:数据是如何存储的?
- 13 | 垃圾回收:垃圾数据是如何自动回收的?
- 14 | 编译器和解释器:V8是如何执行一段JavaScript代码的?
浏览器中的页面循环系统
- 15 | 消息队列和事件循环:页面是怎么“活”起来的?
- 16 | WebAPI:setTimeout是如何实现的?
- 17 | WebAPI:XMLHttpRequest是怎么实现的?
- 18 | 宏任务和微任务:不是所有任务都是一个待遇
- 19 | Promise:使用Promise,告别回调函数
- 20 | async/await:使用同步的方式去写异步代码
浏览器中的页面
- 21 | Chrome开发者工具:利用网络面板做性能分析
- 22 | DOM树:JavaScript是如何影响DOM树构建的?
- 23 | 渲染流水线:CSS如何影响首次加载时的白屏时间?
- 24 | 分层和合成机制:为什么CSS动画比JavaScript高效?
- 25 | 页面性能:如何系统地优化页面?
- 26 | 虚拟DOM:虚拟DOM和实际的DOM有何不同?
- 27 | 渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题?
- 28 | WebComponent:像搭积木一样构建Web应用
浏览器中的网络
- 29 | HTTP/1:HTTP性能优化
- 30|HTTP/2:如何提升网络速度?
- 31|HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络
浏览器安全
- 32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源?
- 33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
- 34 | CSRF攻击:陌生链接不要随便点
- 35 | 安全沙箱:页面和系统之间的隔离墙
- 36 | HTTPS:让数据传输更安全
结束语
- 结束语 | 大道至简
- 第二季回归 | 这次我们来专门聊聊V8
- 结课测试 | 这些浏览器的知识你都掌握了吗?
课外加餐
- 加餐一|浏览上下文组:如何计算Chrome中渲染进程的个数?
- 加餐二|任务调度:有了setTimeOut,为什么还要使用rAF?
- 加餐三|加载阶段性能:使用Audits来优化Web性能
- 加餐四|页面性能工具:如何使用Performance?
- 加餐五 | 性能分析工具:如何分析Performance中的Main指标?
- 加餐六|HTTPS:浏览器如何验证数字证书?