搜索
javascript - 如何制作一个高性能的浏览器?
高洛峰
高洛峰 2017-04-10 16:25:00
[JavaScript讨论组]

未来的APP都在浏览器上

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(7)
阿神

从0制作一个高性能浏览器...涉及到的专业领域的知识深度和广度不是一般人能够掌握。
此题太强,不敢妄答,不过个人建议题主可以去看看Chromium的codebase先感受一下。
Chromium: https://chromium.googlesource.com/chromium/src.git

迷茫

浏览器涉及的面真的很广,大概有这样些部分:
1.浏览器窗口,基本交互元素,如地址栏,书签,chromium以一个主进程处理这些元素;

2.标签页,chromium处理为一个进程或者说render进程;

3.解析和render页面,主要是html和css,当然也包含js中涉及dom的部分。最大的难题有三个,首先是html的解析,然后建立dom树,不能用上下文无关法,也就是说要能处理各种错误;其二,css中设定的规则,要和dom树匹配起来,webkit系的做法是把样式和dom节点attach,gecko则选择建立规则树,同时各家浏览器基本上都把css定义的规则存在了几个hash表中,比如id表,class表,标签表,除此之外,css的层叠也是不大好处理的;其三,也就是解析的速度要快,基本上浏览器都是边加载边解析的,但是很坑爹的是,js往往会改dom或者样式,所以执行js时常常会block解析过程;

4.js以及dom api。js的执行速度自然越快越好,不过js语法过于灵活,要快不容易;

5.数据持久化。包括传统的cookie和h5定义的localstorage和websql等;

6.网络通信。要能处理多平台的网络通信,而且还要能是处理并发的。大概能想到的是linux会使用epoll,windows会用iocp;

7.图形和文字渲染。在html5之后,还要webgl等。

8.上述各部分的协作。浏览器是多线程的,除了渲染主线程外,还有很多其他线程比如网络通信;

伊谢尔伦

你为何不直接将系统理解成一个浏览器呢?所有软件全都运行在系统上,这与所有页面都由浏览器打开并没有什么区别...

PHP中文网

我告诉你个答案,国内的所有浏览器都基于-webkit浏览器内核,苹果系统上的浏览器也是基于webkit内核。这些浏览器就是在这个浏览器内核上封装自己的功能。现在我知道的浏览器内核有opera的浏览器内核o内核,IE的浏览器内核ms内核,火狐的浏览器内核moz内核。为啥我这么叫这些内核?因为我写css样式针对这几种内核定义样式的时候就是这样写前缀的。

大家讲道理

这个。。。一步一步来,可以先从了解webkit开始~webkit是开源的web浏览器引擎,苹果的Safari、谷歌的Chrome浏览器都是基于这个框架来开发的。webkit还支持移动设备和手机,包括iPhone和Android手机都是使用webkit做为浏览器的核心。

高洛峰

我这儿有个从零开始系列,你可以深入研究一下:Programming-Alpha-To-Omega

大家讲道理

你把IE从浏览器市场踢掉我就告诉你怎么做

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号