1. 程式人生 > >GDG Xi'an DevFest 2019 閃電演講 -《假如我是一個瀏覽器》PPT(經典多圖,建議收藏)

GDG Xi'an DevFest 2019 閃電演講 -《假如我是一個瀏覽器》PPT(經典多圖,建議收藏)

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經典建議收藏

GDG Xi'an DevFest2019演講PPT連結: http://tmp.link/f/5dd9e6bf461b6 閃電演講《假如我是一個瀏覽器》PPT連結: https://github.com/dashnowords/blogs/tree/master/Demo/DevFest2019

2017 ACM-ICPC Asia Xi'an Problem A XOR異或線性基

problem 線段樹 all gpo efi printf 異或 bre %d 題目鏈接 2017西安賽區 Problem A 題意 給定一個數列,和$q$個詢問,每個詢問中我們可以在區間$[L, R]$中選出一些數。    假設我們選出來的這個數列為$A[i_{

[補題]ACM-ICPC 2017 Asia Xi'an

線段 次數 pri min 感覺 ans cpc += 數據 G: 題意:查詢[l,r]子區間異或的和 題解: 按位考慮,每一位統計奇數區間出現的次數算價值即可,線段樹區間合並 #include <bits/stdc++.h> #define ll long

Gym.102059: 2018-2019 XIX Open Cup, Grand Prix of Korea寒假gym自訓第一場

int sin 當前位置 一個 mes span 不存在 src tree 整體來說,這一場的質量比較高,但是題意也有些難懂。 E.Electronic Circuit 題意: 給你N個點,M根線,問它是否是一個合法的電路。 思路: 一個合法的電路,經過一些串聯並

如何將高程資料(等高線)轉換成xi&#39;an80或者beijing54座標系

   高程資料下載的預設座標系是WGS84座標系,由於在我國的GIS應用中經常會用到xi'an80,Beijing54座標系,因此,特別講出如何對投影進行相應的轉換。      選擇:【工具】->【設定】,選擇裡面的【投影】,如下圖所示:

An CC 2019 for Mac破解版v19.0破解教程

animate cc 2019 破解版是adobe公司旗下的一款強大的動畫設計軟體,可以為網頁開發者提供更適應現有網頁應用的音訊、圖片、視訊、動畫等創作支援。藉助Animate CC 2019,您可以快速釋出到多個平臺,並在桌面,移動裝置和電視上與觀眾聯絡。 業界領先的動畫工具集可讓您建立可在任何螢幕上移

an cc 2019 mac破解版附啟用工具 v19.0破解版

一個cc 2019 mac破解版是Adobe公司旗下的一款強大的動畫設計軟體,由原Adobe FlashProfessional CC更名得來,維持原有Flash開發工具支援外新增HTML 5創作工具,為網頁開發者提供更適應現有網頁應用的音訊,圖片,視訊,動畫等創作支援。而且Animate CC20

BIGEMAP如何將高程資料(等高線)轉換成xi&#39;an80或者beijing54座標系

    高程資料下載的預設座標系是WGS84座標系,由於在我國的GIS應用中經常會用到xi'an80,Beijing54座標系,因此,特別講出如何對投影進行相應的轉換。      選擇:【工具】->【設定】,選擇裡面的【投影】,如

【動畫製作】Animate CC 2019 for Mac(an cc 2019)破解版

Adobe Animate CC 2019 for Mac(an cc 2019)附啟用工具 v19.0永久破解版adobe animate cc 2019破解版是一款非常強大的動畫製作軟體,支援HTML動畫編輯和flash動畫編輯功能,可設計適合遊戲、應用程式和 Web 的互動式向量動畫和點陣圖動

uni-app:基於Vue的跨端框架閃電演講內容整理) | 掘金開發者大會

感謝掘金提供機會,跟大家閃電分享一下uni-app ^_^ 一句話介紹uni-app :一款基於vue的跨平臺前端框架; 多說兩句就是:開發者通過編寫 Vue.js 程式碼,uni-app 將其編譯到iOS、Android、微信小程式等多個平臺,保證其正確執行並達到優秀體驗。

HDU 5371 2015校聯合訓練賽第七場1003Hotaru&#39;s problem(manacher+二分/枚舉)

2015多校 while bre 算法 down ice man 暴力 turn pid=5371">HDU 5371 題意: 定義一個序列為N序列:這個序列按分作三部分,第一部分與第三部分同樣,第一部分與第二部分對稱。 如今給你一個長為n(n

POJ 2348 Euclid&#39;s Game輾轉相除博弈+自由度分析

main -1 發現 轉移 pro b- color 思路 span 題目鏈接:http://poj.org/problem?id=2348 題目大意:給你兩個數a,b,Stan和Ollie輪流操作,每次可以將較大的數減去較小的數的整數倍,相減後結果不能小於0,誰先將其中

[翻譯] TensorFlow Programmer&#39;s Guide之Frequently Asked Questions問得頻率最的幾個問題

_for file 語言 ons docs locking 內存數據 code mage 目錄: 特點和兼容性(Features and Compatibility) 建立一個TensorFlow圖(Building a TensorFlow graph) 運行一個T

3dmax2013-2019【3dsmax破解版】破解中文版付破解教程

3Dmax3dmax2013-2019【3dsmax破解版】破解中文版界面語言:中文版/英文版軟件大小:5.32GB運行環境:Win2003,WinXP,Win2000,Win9X,Win7運行支持:64位

HUD 1288 Hat&#39;s Tea反向的貪心非常好的一道題

ref miss ssi ret end string man java 都是 傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=1288 Hat‘s Tea Time Limit: 2000/1000 MS (Java/Other

POJ - 2528 Mayor&#39;s posters 離散化+線段樹區間修改

clu max 單位 cover rst unique ace output https https://cn.vjudge.net/problem/POJ-2528 題意 給定一些海報,可能相互重疊,告訴你每個海報的寬度(高度都一樣的)和先後疊放順序,問沒有被完全蓋

論文筆記——An online EEG-based brain-computer interface for controlling hand grasp using an adaptive probabilistic neural network10年被引用66次

不同 -s evel 模型 his ren 虛擬 dem virt 題目:利用自適應概率網絡設計一種在線腦機接口樓方法控制手部抓握 概要:這篇文章提出了一種新的腦機接口方法,控制手部,系列手部抓握動作和張開在虛擬現實環境中。這篇文章希望在現實生活中利用腦機接口技術控制抓握。

錯誤日誌:Resource leak: &#39;xxx&#39; is never closedScanner類的註意事項

import sans 釋放內存 ann p s pan 函數 eve style 在使用Scanner類時,舉個例子: 1 import java.util.Scanner; 2 public class data { 3 4 public stat

error: expected declaration specifiers or &#39;...&#39; before xxxxxx是函數形參

... 編譯 exp 定義 包含 情況 搜索 .... make 在使用帶參有返回值的函數指針做參數時,編譯出現下面情況 …………………… error: expected declaration specifiers or ‘...‘ before ‘FunType‘

There is no getter for property named &#39;XXX&#39; in class &#39;aaa.bbb.ccc&#39;終極騷操作的解決方法

rda col property pan 方法 style pack insert tro   使用SpringBoot整合Mybatis時,遇到了像標題的異常,博主當時是用Bean類對象作為參數的,所以百度了很久都沒有建設性答案。貼一下報錯的xxxDao文件和xxxMap