Chrome,Firefox和Safari(WebKit)等现代网络浏览器的代码库非常庞大。我很好奇是什么特别使他们的实现变得如此重要,以至于他们需要大量的代码。
作为一个推论,如果一个假设的浏览器只支持严格的HTML5和JavaScript,为了避免兼容性攻击,代码库是否会显着缩小?
答案 0 :(得分:7)
关于第一个问题,请考虑现代浏览器需要实现的内容(某些浏览器会将其中的一部分工作推送到操作系统服务):
document.write
注入字符串等内容的代码从JavaScript到解析器的输入流,等等。请注意,胶水代码的数量通常是交互模块数量的二次方。我可能错过了一些事情,但这不是我的头脑。
除此之外,至少Gecko和WebKit都有字符串和数组之类的模板库(因为C ++标准库有各种缺点)。
其余的......在这一点上,许多“兼容性黑客”实际上是Web标准的一部分。所以你无法完全避免它们。您的场景涉及JavaScript和HTML,但不涉及SVG或MathML或CSS。如果你真的只是指HTML和JavaScript而不是CSS或其他,那么你显然可以删除一堆代码。如果你包括所有这些,加上HTML5的音频和视频功能,并希望你的浏览器表现良好,那么我怀疑你可以把它做得更小。
答案 1 :(得分:1)
我认为现代网络浏览器是复杂的应用程序。主要是,他们有渲染引擎,必须处理不同种类的HTML,处理非HTML格式(如XML,RSS等),CSS处理程序,Javascript引擎有时使用JIT。
除此之外,它们还具有插件架构和API,用于抽象平台之间差异的部分,通常使用其他应用程序使用的组件构建。
这使得它们非常重要。至于你的作品,我想是的。 Lynx非常小,不支持Javascript或花哨的HTML。