浏览器是一台电脑以及手机里面必不可少的一个东西,大家的很多东西都需要以浏览器为基础平台开展,近期有报道称,浏览器内核有上千万行代码,浏览器的内核真的有这么复杂吗?
浏览器复杂就复杂在它几乎集成了CS所有核心课程的知识。每个子模块单独拿出来都是一个巨庞大的系统工程,比如 net 模块,它不仅是一个完备且严谨的 HTTP Client,更是具有现在很多网络库都不具备的先进特性,比如 HTTP/2、QUIC 等。浏览器是这个世界上最复杂的软件之一,尤其是现代浏览器,编译器,操作系统,图形学,而且这还不是靠行数能搞定的。每个object各自的网络请求、同步请求、js回调,可能一塞就是几百上千的塞,一个地方出了问题,就可能导致网页元素层次出现问题、点击没法回调。
为啥微软,欧朋最后都放弃了自己的引擎而使用谷歌家的,主要就是磨合以及效率谷歌做到目前最好。“能用”和“好用”虽然只差一个字,但需要下的功夫真的差的不是一星半点。谷歌做到让微软和欧朋纷纷放弃自己的引擎投靠Chrome用了十几年的时间。
而现代化的浏览器也早就不仅仅是浏览器了,像Chrome、Firefox的中间件都实现了一个操作系统该有的大部分功能,甚至当今许多主流桌面和移动端应用框架,其实都是运行在浏览器内核之上。