Soumettre la recherche
Mettre en ligne
浏览器渲染与web前端开发
•
36 j'aime
•
3,289 vues
Duoyi Wu
Suivre
百度web前端研发部2010年10月在电子科技大学的技术交流
Lire moins
Lire la suite
Technologie
Design
Signaler
Partager
Signaler
Partager
1 sur 86
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
Will Huang
深入浅出浏览器硬件加速
深入浅出浏览器硬件加速
Baidu, Inc.
高工的个人发展规划
高工的个人发展规划
Duoyi Wu
Javascript engine performance
Javascript engine performance
Duoyi Wu
JavaScript Patterns
JavaScript Patterns
Cat Chen
D2分享:让前端开发更高效
D2分享:让前端开发更高效
Berg Ray
Where to meet pretties
Where to meet pretties
Cat Chen
Recommandé
Blazor 與 Radzen 同行
Blazor 與 Radzen 同行
Jimmy Ho
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
Will Huang
深入浅出浏览器硬件加速
深入浅出浏览器硬件加速
Baidu, Inc.
高工的个人发展规划
高工的个人发展规划
Duoyi Wu
Javascript engine performance
Javascript engine performance
Duoyi Wu
JavaScript Patterns
JavaScript Patterns
Cat Chen
D2分享:让前端开发更高效
D2分享:让前端开发更高效
Berg Ray
Where to meet pretties
Where to meet pretties
Cat Chen
Baidu Map API Introduction
Baidu Map API Introduction
Cat Chen
知道你为什么找不到好工作吗?
知道你为什么找不到好工作吗?
Cat Chen
Baidu前端交流会-百度基础平台分享
Baidu前端交流会-百度基础平台分享
Berg Ray
Xaml Tutorial By Allan
Xaml Tutorial By Allan
Cat Chen
Catch a spider monkey
Catch a spider monkey
ChengHui Weng
HTTP2:新的机遇与挑战
HTTP2:新的机遇与挑战
Jerry Qu
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
Virtual machine and javascript engine
Virtual machine and javascript engine
Duoyi Wu
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
Android 4-app
Android 4-app
lydiafly
Berserk js
Berserk js
taobao.com
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
Edward Kuo
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
Adam Lu
Web Development Roadmap
Web Development Roadmap
Alexander Shieh
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
iflytek
Android快速发布&持续集成
Android快速发布&持续集成
whykill
前端開發學習簡介
前端開發學習簡介
peterju
Html5移动网站开发实践
Html5移动网站开发实践
Web Zhao
美团前端架构简介
美团前端架构简介
pan weizeng
Contenu connexe
En vedette
Baidu Map API Introduction
Baidu Map API Introduction
Cat Chen
知道你为什么找不到好工作吗?
知道你为什么找不到好工作吗?
Cat Chen
Baidu前端交流会-百度基础平台分享
Baidu前端交流会-百度基础平台分享
Berg Ray
Xaml Tutorial By Allan
Xaml Tutorial By Allan
Cat Chen
Catch a spider monkey
Catch a spider monkey
ChengHui Weng
HTTP2:新的机遇与挑战
HTTP2:新的机遇与挑战
Jerry Qu
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
Web前端性能优化 2014
Web前端性能优化 2014
Yubei Li
Virtual machine and javascript engine
Virtual machine and javascript engine
Duoyi Wu
En vedette
(9)
Baidu Map API Introduction
Baidu Map API Introduction
知道你为什么找不到好工作吗?
知道你为什么找不到好工作吗?
Baidu前端交流会-百度基础平台分享
Baidu前端交流会-百度基础平台分享
Xaml Tutorial By Allan
Xaml Tutorial By Allan
Catch a spider monkey
Catch a spider monkey
HTTP2:新的机遇与挑战
HTTP2:新的机遇与挑战
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Web前端性能优化 2014
Web前端性能优化 2014
Virtual machine and javascript engine
Virtual machine and javascript engine
Similaire à 浏览器渲染与web前端开发
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
Android 4-app
Android 4-app
lydiafly
Berserk js
Berserk js
taobao.com
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
Edward Kuo
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
Adam Lu
Web Development Roadmap
Web Development Roadmap
Alexander Shieh
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
iflytek
Android快速发布&持续集成
Android快速发布&持续集成
whykill
前端開發學習簡介
前端開發學習簡介
peterju
Html5移动网站开发实践
Html5移动网站开发实践
Web Zhao
美团前端架构简介
美团前端架构简介
pan weizeng
前端性能测试
前端性能测试
tbmallf2e
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline
turtleknight
Responsive Web UI Design
Responsive Web UI Design
jay li
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
kumawu
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
kumawu
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
kumawu
Unreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UI
Epic Games China
Similaire à 浏览器渲染与web前端开发
(20)
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Android 4-app
Android 4-app
Berserk js
Berserk js
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
ASP.NET Core 3.0 新功能
ASP.NET Core 3.0 新功能
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
Web Development Roadmap
Web Development Roadmap
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Web端交互逻辑抽象的实践—运营h5页面和逻辑自动生成利器
Android快速发布&持续集成
Android快速发布&持续集成
前端開發學習簡介
前端開發學習簡介
Html5移动网站开发实践
Html5移动网站开发实践
美团前端架构简介
美团前端架构简介
前端性能测试
前端性能测试
20120516 axure rp prototype design outline
20120516 axure rp prototype design outline
Responsive Web UI Design
Responsive Web UI Design
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
Unreal Open Day 2017 Optimize in Mobile UI
Unreal Open Day 2017 Optimize in Mobile UI
浏览器渲染与web前端开发
1.
浏览器渲染与WEB前端开发 nwind
2.
Outline • 百度Web前端研发部 • HTML布局无处不在 •
渲染引擎 • 浏览器
3.
4.
FrontEnd
5.
Web前端研发部 • 负责百度各产品线前端的开发、优化 • html、css、javascript、flash、php
6.
百度视频
7.
内部平台
8.
Outline • 百度Web前端研发部 • HTML布局无处不在 •
渲染引擎 • 浏览器
9.
当CSS和HTML越来越丰富时...
10.
HTML布局将无处不在 • 悄悄融入到各种桌面应用中 • 成为程序的插件 •
本地应用 • 各种其它设备...
11.
嵌入到桌面应用
12.
Widget
13.
Smartphone Apps using
the Web Standards you already know
14.
User Interface Everywhere
using the Web Standards you already know
15.
Outline • 百度Web前端研发部 • HTML布局无处不在 •
渲染引擎 • 浏览器
16.
Webkit engine
17.
WebKit渲染引擎 • is an
engine, not a browser • forked from KHTML • 10% market share
18.
WebKit begins where
the chrome ends http://webkit.org/blog/101/back-to-basics/
19.
What uses WebKit
20.
WebKit engine features •
standards compliance (css3, html5) • performance • clear, maintainable code
21.
WebKit Components • WebKit •
front-end layer, gtk/mac/qt/win/wx • WebCore • rendering, layout, painting... • JavaScriptCore • JavaScript engine (interpreter)
22.
WebKit API
23.
Application WebCore WebKit JavaScriptCore WebKit API Boundary UI Process
24.
WebKit API • 封装对webcore的调用 •
为webcore提供平台相关的操作 • 网络调用 • 绘图 • 监听用户交互
25.
WebKit API • mac •
qt • gtk • win • wx • chromium • ...
26.
WebKit mac #include <WebKit/WebKit.h>
27.
WebKit development • WebView
WebFrame WebPreferences... • Delegate • DOM API • using javascript
28.
WebView API • loadRequest() •
reload() • goBack() / goForward() • makeTextLarger() / makeTextSmaller()
29.
Delegate • WebFrameLoad • didFailLoadWithError:forFrame •
WebPolicy • decidePolicyForNewWindowAction • WebResourceLoad • didFinishLoading • WebUI
30.
DOM API • W3C
DOM Specification • [[doc documentElement] innerHTML]
31.
Call Javascript • id
win = [webView windowScriptObject]; • [win evaluateWebScript:@"location.href"];
32.
WebKit demo
33.
WebKit Components • WebKit •
front-end layer, gtk/mac/qt/win/wx • WebCore • rendering, layout, painting... • JavaScriptCore • JavaScript engine (interpreter)
34.
WebCore Parsing Loading Painting Rendering Script Execution Layout Style Resolution Event
Handling
35.
Process Loading Parsing Rending layout Painting
36.
Loading • 网络, 本地 •
分为两种类型 • Frames 网页 • Resources 其它
37.
Loading is complexity •
调用网络接口 • 加载 解析 执行, 错综复杂的关系 • 各种Cache机制 • HTTP • 前进后退
38.
http://webkit.org/blog/1188/how-webkit-loads-a-web-page/
39.
Process Loading Parsing Rending layout Painting
40.
Parsing • 状态机 • 构建DOM树 •
建立节点的对象 • 各种出错情况处理
41.
DOM Tree
42.
Process Loading Parsing Rending layout Painting
43.
Rending • 依据Selector计算出节点的样式 • 生成Render
Tree • 需等待CSS加载 • RenderObject.h
44.
Selector matching
45.
Render Tree • 只和展现相关 •
不关心display:none的DOM节点 • 将节点和样式关联起来 • 生成一些匿名节点 • 文字折行
46.
Render Tree
47.
Process Loading Parsing Rending layout Painting
48.
Layout • 从根节点递归调用render对象的layout方法 • 只有input框从子结点开始渲染 •
计算元素的大小及位置等信息
49.
Process Loading Parsing Rending layout Painting
50.
Painting • 从root元素开始 • 从底至顶一层层绘图 •
调用2D图形API
51.
overview (Gecko)
52.
Event Handling • 监听鼠标键盘事件 •
找到对应的元素(hitTest) • 设置需要layout的标志位 • layout (队列, 异步执行) • painting
53.
Event Example • -‐[WebHTMLView
mouseUp:] • WebCore::EventHandler::mouseUp • WebCore::EventHandler::handleMouseReleaseEvent • WebCore::EventHandler::prepareMouseEvent • WebCore::Document::preperMouseEvent • WebCore::RenderLayer::hitTest • WebCore::RenderLayer::hitTestLayer
54.
Event System (Mac)
55.
Dynamic changes
56.
el.style.left = "2px"; el.style.left
= el.offsetLeft + "px";
57.
Outline • 百度Web前端研发部 • HTML布局无处不在 •
渲染引擎 • 浏览器
58.
Browsers
59.
Browser features 起始页 tab管理 崩溃恢复 地址栏增强 广告拦截 超级拖拽 快速查找 下载管理 自动升级 防假死 智能填表 代理切换 屏幕截图 收藏管理 鼠标手势 安全检测 进程管理 皮肤 缩放 错误页 安全检测 在线升级 插件机制 账号绑定 快捷键 隐私浏览 清除纪录
60.
基本实现方法 • 监听渲染引擎提供的事件/hook • 使用渲染引擎提供的DOM
API • 如鼠标手势 • 有些功能可以直接用html • 如起始页
61.
Chrome [OS]
62.
Chrome • Multi-process • WebKit
glue • Skia • Network • Extension • Update
63.
Multi-process Architecture • browser
as an operating system • asynchronous • backing store • sandbox
64.
Multi-process Architecture Application (Host
Process WebKit WebCore JavaScriptCore API Boundary UI Process Application (Render Process) Web Process
65.
Chrome multi-process architecture IPC IPC
66.
Other Process Model •
WebKit2 • IE8 “Loosely-Coupled IE”, “Gazelle” • Firefox “Electrolysis”
67.
WebKit2 • build in
separate process • no-blocking API
68.
WebKit2 Application WebKit (Web Process) WebCore JavaScriptCore API
Boundary UI Process WebKit (UI Process) Web Process
69.
WebKit WebKit2 Chrome Application WebKit WebCore JavaScriptCore UI
Process Application Web Process Application WebKit WebCore JavaScriptCore UI Process WebKit Web Process Application WebKit WebCore JavaScriptCore UI Process
70.
WebKit glue • "WebKit
embedding layer" • 避免依赖各种GUI框架 • Chrome与WebKit的桥梁
71.
Chrome layers Browser window Tab
contents Render host Renderer WebKit glue WebKitWebKit port
72.
Skia • GDI is
not enough • GDI+ is no longer support and is slow • in-house solution • use GDI for text
73.
Network • Rewrite Network
Stack • DNS Prefetching • SPDY
74.
Extensions • can use
javascript • html5, css3 • donʼt need restart • NPAPI • not sandbox • Native Client
75.
SandBox
76.
Firefox (Gecko)
77.
Firefox (Gecko) • not
just a browser • mail, newsgroup, web design tool... • complexity • XPCOM, XUL • mozilla 2
78.
Komodo
79.
Thunderbird
80.
Internet Explorer (Trident)
81.
IE shells (MSHTML) •
360安全浏览器 • 基于theworld, 基本上就是换了个肤 • 支持多进程模式 • 遨游浏览器 • 细节功能很多, UI不错 • 搜狗高速浏览器 • 全网加速 • webkit/IE双引擎
82.
• HTML5 CSS3
ES5 SVG • GPU • Chakra inside
83.
References http://trac.webkit.org/wiki/ http://www.chromium.org/developers/ http://dbaron.org/talks/ http://trac.webkit.org/wiki/WebKit2
84.
欢迎加入百度WEB前端研发部! http://hr.baidu.com/www/campusPro.action?l=7 搜索研发部_Web前端研发工程师(2011校园招聘)
85.
http://www.baiduux.com
86.
Thank you
Télécharger maintenant