作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
GWT 将 Java 源代码编译成 Javascript,并根据文件内容的哈希值命名文件。每次编译我都会得到一组新文件,因为 javascript 内容在变化,即使我根本没有更改源代码也是如此。
OBF 和 PRETTY 输出的文件不同,但如果我将其设置为 DETAILED,则每次编译它们都不再不同。在 PRETTY 中,我可以看到编译之间的所有/大部分差异都在 typeId 的值参数中。例如,调用一个名为 initValues() 的函数时,它的 typeId 参数使用不同的值。
最佳答案
在 PRETTY 模式下,您看到的不同之处在于将 Java 类分配给 TypeId。这就是 GWT 管理运行时类型检查的方式。您会注意到每个脚本底部的表格基本上将每个 typeId 映射到所有兼容的父类(super class)。这就是 GWT 仍然可以在 JavaScript 中抛出 ClassCastException 的原因(尽管您应该很少遇到这种情况!)。
在 OBF 模式下,差异是由于分配了缩小的函数名称。
在这两种情况下,都是由编译器处理代码的顺序决定的。某些内部符号表可能正在使用无序集合存储符号进行处理。发生这种情况的原因有很多。
关于gwt - 我在每次 GWT 编译时都会得到新的 javascript,而无需更改 java 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/848619/
我是一名优秀的程序员,十分优秀!