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

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

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

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

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

推荐问题