我们有一个非常大的GWT项目,导致大小为2Mb的单片应用程序.破坏它的明显方法是使用分割点.例如,我们的应用程序是菜单驱动,因此每个菜单操作的逻辑可能是一个分割点.此外,调用GWT RPC的代码也可以是分割点.以这种方式,一个2Mb应用程序可能会被分解成一个300K的启动应用程序,其余的被加载首次使用.
GWT将对GWT.runAsync()的调用视为将JS分解成在运行时异步加载的较小块的位置.例如要设置调用doSomething()的分割点,我们这样写:
GWT.runAsync(new RunAsyncCallback() { public void onFailure(Throwable caught) { Window.alert("Oh dear could not load app"); } public void onSuccess() { doSomething(); } });
GWT编译器将会看到这个代码,并将其标记为将代码拆分成较小片段的候选项,这些片段将在首次使用时被加载.
我们遇到的问题是,如果我们将分割点放入代码中,则构建字面上需要10-50倍的时间才能执行.我想这个代码在处理包含很多类的项目时效率不高.所以2分钟的建造成为一个20-100分钟的构建是不能接受的.
所以问题是,如何将分割点放入代码中,但是防止编译器分裂,除非我明确要求它?我设想,日复一日的发展将忽略分裂点,但夜间或生产建设将分裂.
有任何想法吗?
解决方法
将-draftCompile作为编译器参数.
看看这个帖子: Improving GWT compilation speed
看看这个帖子: Improving GWT compilation speed