GDG Xi'an DevFest2019演讲PPT链接:
http://tmp.link/f/5dd9e6bf461b6

闪电演讲《假如我是一个浏览器》PPT链接:
https://github.com/dashnowords/blogs/tree/master/Demo/DevFest2019

关于我的一篇鸡汤文,献给所有努力中的野生前端:
仰望星空的人,不应该被嘲笑--DevFest闪电演讲嘉宾--史文强

摘要

内容讲述了HTML,CSS和JavaScript文件从代码到浏览器中图形的基本过程,实际上每个阶段正好代表了高级前端工程师可以选择的三大细分方向——架构师,工程化,图形学。PPT基本上全是图,引用了一些知名的前端神图,大部分都是自己一点点做的,毕竟图的表现力比文字要生动直观一些,原稿几乎每一页都加了备注!!!,有需要的可以在我的博客或者GDG西安官方公众号获取到。

作者简介

请求阶段

请求阶段从解析DNS开始,它是一个递归的过程,可以在Linux系统中使用dig+trace工具进行追踪查看;查询到地址后就需要开始建立连接(三次握手建立连接),然后从服务器获取第一个文件,通常是index.html,获取到文件后就需要根据响应头里的信息进行一些处理,对这块不太熟悉的同学可以阅读《图解Http》一书,强制缓存和协商缓存这一块是很重要的考点,index.html在解析时可能还会碰到请求其他资源的情况,这时又会引出CDN等等其他话题,本次分享中并未涉及。如果对于前端可用性及资源部署方面感兴趣,可以考虑向架构师的方向发展,也就是只将前端应用视为整个链路中的一环,尝试去关注整个链路中各个环节,前端工程师切入时并不需要特别关注去解决细枝末节的技术问题,那毕竟需要时间和经验的积累,请记住你是有伙伴的,我个人比较推荐前端工程师尝试建设全链路的异常监控体系,去了解各个环节有哪些关键指标,如何去呈现,如何去判断异常等等,以尽可能稳定有效的方式把关键信息呈现给能解决问题的人。

解析阶段

我在分享时已经提及过,解析阶段的关键词就是“编译原理”,前端基础的HTML,CSS,JS,以及常见的工程化工具例如Webpack,Babel,Eslint等等,全部都是基于编译原理来运作的,如果从纯学术的角度来看,它的确很晦涩,但是从应用的角度来理解,实际上无论是分词,转换还是遍历AST以及最终的代码生成,实际上都是看得见摸得着的,并不算特别难理解,B站上有很多国内外的《编译原理》课程录像,你懂的(B站真的是学习用的)。其中还涉及到了一些基本的数据结构和基础算法的知识,这里的知识是对基本功的硬考验,也就是“设计模式”“数据结构”和“基础算法”的三座大山,爬山很慢,但真的很值。这一块的知识可以翻看朱永盛的《Webkit技术内幕》一书,慎重,没有老司机带的话这本书很容易看的人怀疑人生。

种树阶段

种树阶段只是戏称,就是为了不同的目的构建了许许多多的树和层。HTML解析后生成DOM树,它表示文档的结构,CSS在内部优化时也会生成树,为了将用于渲染的信息整合在一起,两者被合并生成了RenderObject树,为了解决层叠顺序问题,又在此基础上生成了RenderLayer层,为了利用硬件加速渲染,又为满足另一些条件的层生成CompositingLayer合成层,合成层又使用GraphicsLayer来进行后端存储。概念之多,相对复杂。为了排除干扰,本次分享中并没有讲述Chrome浏览器的多进程模型和多线程结构,它们只是为了更好更高效地处理好关键渲染步骤,一次性信息量太大反而会影响吸收。

画画阶段

画画阶段实际上是指将对象信息通过光栅化处理后得到位图信息并展示在显示器上的过程,PPT中并没有涉及,它涉及到很多图形学相关的知识,基本的WebGL以及Chromium渲染管线方面的知识。对此感兴趣的读者可以扫描下面的二维码关注我技术博客中《Web高性能动画及渲染原理》系列博文,比较详细地描述了这部分相关知识。最后提一下,原稿最后一页的资料在播放模式下都可以直接点击跳转,还有每一页的备注信息如果看不见可能需要手动把画面向上拖拽缩小一点。

硬广时间

我的博文集《大史住在大前端》是关于前端基础的文章,扫下面右边的二维码就可以看到,基本都是系列专题,没有太多关于三大框架或是热门技术的东西,都是基础基础基础,或许会对你有帮助。最后再次感谢GDGXi'an提供的这次机会,让我认识了好多好多优秀的大佬和开发者。

GDG Xi'an DevFest 2019 闪电演讲 -《假如我是一个浏览器》PPT(经典多图,建议收藏)的更多相关文章

  1. 使用MATLAB 2019 App Design 工具设计一个 电子日记App

    使用MATLAB 2019 App Design 工具设计一个 电子日记App1.1 前言:由于信号与系统课程需要,因此下载了MATLAB软件,加之对新款的执着追求,通过一些渠道,下载了MATLAB ...

  2. Unite Shanghai 2019全日程曝光(建议收藏)

    https://mp.weixin.qq.com/s/KvAyXpDhqWROtTX1Ol3a4Q 5月10-12日,Unite Shanghai 2019即将在上海国际会议中心正式开幕.本次大会共设 ...

  3. BZOJ-1822 Frozen Nova 冷冻波 计(jie)算(xi)几何+二分+最大流判定+经典建图

    这道逼题!感受到了数学对我的深深恶意(#‵′).... 1822: [JSOI2010]Frozen Nova 冷冻波 Time Limit: 10 Sec Memory Limit: 64 MB S ...

  4. 【2019北京集训2】duck 线段树优化建图+tarjan

    题目大意:给你$n$个点,第$i$个点有点权$v_i$.你需要将这$n$个点排成一排,第$i$个点的点权能被累加当且仅当这个点前面存在编号在$[l_i,r_i]$中的点,问你这些点应该如何排列,点权和 ...

  5. 2019前端面试系列——HTTP、浏览器面试题

    浏览器存储的方式有哪些 特性 cookie localStorage sessionStorage indexedDB 数据生命周期 一般由服务器生成,可以设置过期时间 除非被清理,否则一直存在 页面 ...

  6. 【2019.8.12 慈溪模拟赛 T2】汪哥图(wang)(前缀和)

    森林 考虑到题目中给出条件两点间至多只有一条路径. 就可以发现,这是一个森林. 而森林有一个很有用的性质. 考虑对于一棵树,点数-边数=\(1\). 因此对于一个森林,点数-边数=连通块个数. 所以, ...

  7. 2019.03.30 Dialog demo 一个标准使用的dialog程序

    PROGRAM zdemo_dialog. INCLUDE zdemo_dialogtop. INCLUDE zdemo_dialogo01. INCLUDE zdemo_dialogi01. INC ...

  8. 2019微信公开课 同行With Us 听课笔记及演讲全文

    [2019WeChat 微信公开课] 产品理念: 微信启动页 一个小人站在地球前面,每个人都有自己的理解和解读 所谓异类,表示与别人与众不同,即优秀的代名词. 微信的与众不同体现在尊重用户对产品的感受 ...

  9. 众咖云集的 PyCon 2019 上海站,大佬们都讲了啥

    9 月 21 号周六,我参加了 PyCon China 2019 上海站,这是每年一届的 Python 中国开发者大会. 今年的上海站比往年的阵容扩大很多,「流畅的 Python」作者.Flask 作 ...

随机推荐

  1. (day33)数据库

    目录 1. 数据库是什么 2. 为什么使用数据库 3. 数据库的分类 1. 关系型数据库 2. 非关系型数据库 4. mysql的架构 5. mysql的安装 1. windows的安装 2. win ...

  2. linux端口查询

    常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务.守护进程.和程序所使用的最常见的通信端口.该列表还可以在 /etc/services 文件中找到.要查看由互联网号码分派局(IANA) ...

  3. 设计模式(十四)Chain of Responsibility模式

    Chain of Responsibility模式就是当外部请求程序进行某个处理,但程序暂时无法直接决定由哪个对象负责处理时,就需要推卸责任.也就是说,当一个人被要求做什么事时,如果他可以做就自己做, ...

  4. SpringBoot整合MybatisPlus3.X之分页插件(四)

    注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...

  5. python实现输入任意一个大写字母生成金字塔的示例

    输入任意一个大写字母,生成金字塔图形 def GoldTa(input): L = [chr(i) for i in range(65, 91)] # 大写字母A--Z idA = 65 # 从A开始 ...

  6. 【AtCoder - 5659 】>< (思维题)

    >< 直接写中文了 Problem Statement 给定的是长度为N-1的字符串S. S中的每个字符都是<或>. 当对所有i(1≤i≤N-1)都满足以下条件时,N个非负整数 ...

  7. Go 程序的性能监控与分析 pprof

    你有没有考虑过,你的goroutines是如何被go的runtime系统调度的?是否尝试理解过为什么在程序中增加了并发,但并没有给它带来更好的性能?go执行跟踪程序可以帮助回答这些疑问,还有其他和其有 ...

  8. Netty启动流程剖析

    编者注:Netty是Java领域有名的开源网络库,特点是高性能和高扩展性,因此很多流行的框架都是基于它来构建的,比如我们熟知的Dubbo.Rocketmq.Hadoop等,针对高性能RPC,一般都是基 ...

  9. GitHub_Hexo_Next 搭建博客

    利用最新版本的 hexo+next 重构了个人博客,下面简单记录了搭建博客的完整过程: 一.环境准备 1.安装 Node.js 2.安装 Git 3.注册 Github 账号 二.在GitHub上创建 ...

  10. p4141(消失之物)

    题目描述 ftiasch 有 N 个物品, 体积分别是 W1, W2, …, WN. 由于她的疏忽, 第 i 个物品丢失了. “要使用剩下的 N – 1 物品装满容积为 x 的背包,有几种方法呢?” ...