HTML – 为什么现代Web浏览器的代码库如此之大?

发布时间:2020-08-01 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了HTML – 为什么现代Web浏览器的代码库如此之大?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
适用于Chrome,Firefox和Safari(WebKit)等现代Web浏览器的代码库非常庞大.我很好奇是什么特别使他们的实现非常简单,他们需要大量的代码.

作为一个推论,如果一个假设的浏览器只支持严格的HTML5JavaScript,为了避免兼容性攻击,代码库是否会明显变小?

解决方法

对于您的第一个问题,请考虑现代浏览器需要实现的内容(某些浏览器将其中的一部分工作推送到操作系统服务):

>几个解析器:至少XML,HTML,JavaScript,CSS.
>至少四个独立的布局系统(CSS盒模型,flexbox,SVG,MathML).
>至少一个图形库;对于跨平台浏览器,这需要每平台后端(IE9只使用系统Direct2D库;据我所知,Mac上的Safari只使用Quartz).
>具有JIT,垃圾收集器,一些标准库(一直在增长;请参阅类型化数组和各种其他最新JavaScript功能)的高性能虚拟机.
> DOM实现,包括HTML特定和特定于SVG的DOM接口等各种内容.
>音频和视频处理设施(Mac上的Safari再次将IE卸载到操作系统).
>图像处理设施,至少支持JPG / GIF / PNG.同样,某些浏览器可能能够将部分内容卸载到操作系统中.
>用于将字节流转换为Unicode字符的库.同样,有时这可以卸载到操作系统,有时不会.
>对于跨平台浏览器,某种可移植性层抽象出平台特定的位.
>具有事务和可编程API的HTML编辑器;认为满足.
> textareas的纯文本编辑器.其中一些可以与HTML编辑器共享.
>拼写检查程序,可以卸载也可以不卸载到操作系统.
>支持HTTP的网络库,可能是SPDY,可能是FTP,也可能是其他一些协议.同样,这可能会也可能不会卸载到操作系统.
>用于处理SSL和各种其他加密需求的加密库.同样,这可能会也可能不会卸载到操作系统.
>至少有一个数据库实现(sqlite似乎很受欢迎).
>实际用户界面和诸如此类的各种代码.
>用于处理所有这些之间交互的胶水代码:在JavaScript和DOM之间来回管理调用的代码,在DOM更改时管理重新计算样式和布局信息的代码,处理诸如document.write从JavaScript注入字符串等内容的代码解析器的输入流,等等.请注意,胶水代码的数量通常是交互模块数量的二次方.

我可能错过了一些东西,但这不是我的头脑.

除此之外,至少Gecko和WebKit具有用于字符串和数组之类的模板库(因为C标准库具有各种缺点).

其余的……在这一点上,许多“兼容性黑客”实际上是Web标准的一部分.所以你无法完全避免它们.您的场景涉及JavaScript和HTML,但不涉及SVG或MathML或CSS.如果你真的只是指HTML和JavaScript而不是CSS或其他,那么你显然可以删除一堆代码.如果你包括所有这些,加上HTML5的音频和视频功能,并希望你的浏览器表现良好,那么我怀疑你可以把它做得更小.

总结

以上是脚本之家为你收集整理的HTML – 为什么现代Web浏览器的代码库如此之大?全部内容,希望文章能够帮你解决HTML – 为什么现代Web浏览器的代码库如此之大?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478
脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!