据报道称“浏览器内核有上千万行代码”,浏览器内核真的很复杂吗?

6个月前 (11-16) 0 点赞 0 收藏 0 评论 12 已阅读

浏览器内核就是一坨巨大的屎山

大家都知道现在html5了,但是现在的浏览器仍然可以正常打开一个html1.0时代的网页

也就是现在的浏览器内核仍然必须兼容几十年前那套虽然在W3C标准里但也几乎没人用都东西,哪怕这东西在新版本html标准里已经deperate了

比如<center>标签,Html4引入,用于居中,html5就deperate了,但为了保证于html4网站的兼容性,所有浏览器仍然不得不保持对此类废弃功能的支持

这些废弃的东西大多都是为了一个小需求映入,然后实现的过于粗糙不便于扩展,然后被便于扩展的东西取代了,比如center标签现在可以用text-align css代替

更不要说W3C那帮孙子因为和微软对着干在标准里塞了不少恶心微软的私货,把当时使用量最大的ie的渲染行为定义为quirk(古怪的)

ie:谁古怪,骂谁古怪,啊,(吸气),骂谁古怪!

然后适配旧ie得网站实在太多了,chrome也后来又加了一个quirk mode,检测到此类网页就去模拟ie的行为渲染。最离谱的还得是ie9,还记得ie9那个兼容性模式吗?ie9为了跟上W3C放弃了ie原有的渲染习惯,而兼容性模式则是模拟旧ie的渲染习惯

谷歌三番两次想要大刀阔斧的改一些屎山里的东西,比如砍掉user agent之类,然后每次都发现,一些老网站兼容性破坏了,现在这个缩短后的user agent已经是谷歌在不影响兼容性下精简到极致的了,包括现在的新的cookies分区,也是谷歌出于历史兼容性的无奈之举

如果我们从0开始实现一个新的项目,最后达到和现有浏览器一样的功能,那至少可以砍掉三分之二代码,比如uniapp从weex改出来的nvue那套,虽然css支持不完整

但没办法,浏览器的历史比我岁数还大,所以最终的结果只能是屎山一步步扩大

谁都知道这样的向前兼容实现不优雅,可谁也没办法优雅的做出一个兼容性没问题的浏览器,除非它根本就不叫浏览器

据报道称“浏览器内核有上千万行代码”,浏览器内核真的很复杂吗?

本文收录在
0评论

登录

忘记密码 ?

切换登录

注册