我发现编译后的JavaScript的大小增长速度比我预期的要快.在我的项目中添加几行Java代码可以增加几个Kbs的脚本大小.
目前,我编译的项目重量为1Mb.除了MVP(活动和地点),测试(JUnit)和日志记录之外,我没有使用任何外部库.
我想知道是否有任何编码实践/建议,以保持编译脚本尽可能小.我不是指代码拆分,而是编码技术或模式,可以使编译的JavaScript有效地缩小.
非常感谢
poh*_*ohl 23
GWT使用"按需付费"设计理念,并且由于您不允许使用反射,编译器可以静态地(在逐个方法的基础上)证明一段代码是"可达"的,并消除那些那不是.例如,如果您从不在ArrayList上使用remove()方法,那么该代码不会包含在生成的JavaScript中.
如果你看到只有几行的几千字节跳转,这可能意味着你已经引入了一种你尚未使用的新类型(可能还有一种取决于其他新类型).这也可能意味着您已经做了一些更改,将这种新类型"通过线路"发送回服务器,在这种情况下,GWT生成器必须包含用于封送该类型的JavaScript,以及可通过其访问的任何新类型"has-a"和"is-a"引用.
所以,如果是我,我会从那里开始:当你发现两行变化使得千兆字节增加时,首先查看类型并询问它是否是您以前使用过的类型,以及是否是通过电线发送新类型,以及该类型是否还取决于引擎盖下的其他类型.
最后一个想法:在Ray Ryan 2009年Google I/O的演讲中,他提到了他从GWT编译团队中挑选出来的一种迷信,他们建议不要使用泛型类型(我不是在谈论Java泛型,而是超类型) )作为RPC参数和返回值.特别是,不是让你的RPC调用获取或返回一个Map,而是让它接受或返回一个HashMap.相信GWT生成器可以缩小它在编译时必须创建的序列化代码的数量(例如,因为它可以避免生成TreeMap的序列化代码).
我希望这有帮助.