我正在寻找使用gin和smartgwt代码分割的例子......
在我的简单应用程序中,我有2个模块AutoLoadModule
和WindowModule
。在我的简单应用程序中,我只需要在单击某个按钮时加载窗口。
我的窗口模块包含:
@Override
protected void configure() {
bind(MainWindow.class).in(Singleton.class);
}
和我的MainWindow
:
@Singleton
public class MainWindow extends Window implements SessionStatusChangedEvent.Handler {
private final XmppSession session;
@Inject
private MainWindow(XmppSession session) {
Log.debug("Constructor ImMainWindow... !");
this.session = session;
initComponent();
}
....................
在我AutoLoadModule
我绑定AutoLoad
asEagerSingleton();
@Override
protected void configure() {
bind(StartButton.class).toProvider(StartChatButtonProvider.class);
bind(AutoLoader.class).asEagerSingleton();
}
我的AutoLoader
课程:
@Singleton
public class AutoLoader implements Scheduler.ScheduledCommand {
private final XmppConnection connection;
@Nullable
private final ImStartButton startButton;
@Inject
protected AutoLoader(final XmppConnection connection, final XmppSession session,
final StartButton startButton) {
this.startButton = startButton;
Scheduler.get().scheduleDeferred(this);
}
@Override
public final void execute() {
startButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Log.debug("StartButton click handler...");
//load window in this point but how ? ....
}
});
}
}
当窗口在WindowModule
时,可以使用Code Splitting加载窗口实例吗?在我的示例应用程序中,我只需要使用代码拆分按需加载窗口,该窗口必须位于gin模块中。
答案 0 :(得分:1)
不确定要拆分代码的位置,但使用gin可以利用AsyncProviders
并让git拆分代码。
@Inject
protected AutoLoader(
final XmppConnection connection,
final XmppSession session,
final StartButton startButton,
final AsyncProvider<MainWindow> mainProvider) {
...
@Override
public final void execute() {
startButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// Here Gin would split the code
mainProvider.get(new AsyncCallback<MainWindow>() {
public void onSuccess(MainWindow main) {
...
}
}
}
});
}