为什么 GWT 编译需要用户代理规范?

Why does GWT compilation require user-agent specification?

我使用 GWT 已有一段时间了。我现在想知道为编译过程指定用户代理的目的是什么。我试图获得有关此的一些信息,但到目前为止,我能得到的唯一解释是它是创建适合浏览器的最终 JS。我的问题是,需要明确提及我们计划在哪个浏览器上使用它的浏览器之间有什么不同?因为最后的结果是Javascript。难道 JS 不应该在所有浏览器上都以类似的方式工作,因为它们都将实现 JS 吗?我能想到的唯一区别是 CSS 的区别,在需要的地方有浏览器特定的 css 属性 名称。那种情况下,GWT编译出来的结果不是一个单独的JS?我错过了什么?如果 JS 有一些差异,那么从事 JS 或 jQuery 或 Angular 等工作的人应该考虑什么?

我已经阅读了 gwt 文档的这一部分,http://www.gwtproject.org/doc/latest/FAQ_DebuggingAndCompiling.html -> .cache.html 文件。但我不明白这到底是什么意思。他们指的是什么问题?

GWT 应用特定于浏览器的优化。即使 javascript 在浏览器之间应该是相同的,特别是旧的浏览器也有差异,这些差异由 GWT 处理(参见 关于 IE 中臭名昭著的 XMLHTTPRequest 与 ActiveX 和 Canvas 与.VML).

缓存文件(称为排列)特定于语言和浏览器,因此客户端只需要下载所需的代码,而不是一个非常大的文件(使用 GWT 延迟加载)。

替换不同浏览器实现的示例,请参阅http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html(延迟绑定示例)。