يكي از قابليت هاي فوق العاده اي است كه قرار است در GWT 2 اضافه شود. براي روشن شدن دليل اينكه چراتيم توسعه GWT تصميم گرفته است چنين قابليتي را به GWT اضافه كند ، ابتدا توضيحي در مورد مشكلات موجود داده مي شود سپس در باره كليات اين قابليت جديد توضيحاتي آورده مي شود.
برنامه هاي AJAX بيشتر كارهاي خود را با استفاده از جاوااسكريپت انجام مي دهند و اين سبب مي شود كه حجم كدهاي جاوااسكريپت برنامه بالا رفته و تاثير مستقيمي برروي زمان اجراي اوليه برنامه بگذارد.
اگر به خروجي كامپايلر GWT توجه كرده باشيد ، اين كامپايلر به ازاي هر مرورگر (و زبان هاي كه برنامه شما از آن پشتيباني مي كند) يك فايل جاوااسكريپت با قالب نام XXXXXXXXXXXXXXXXXXXXXXX.cache.html براي شما ايجاد مي كند. زماني كه حجم كدهاي برنامه شما كم است اين فايل ها حجمي حدود 100 تا 150 كيلوبايت دارند كه بايد در زماني كه كاربر اولين درخواست مشاهده برنامه شما را داد برروي مرورگر كاربر بارگزاري شود. اما وقتي حجم كدهاي برنامه شما افزايش مي يابد حجم اين فايل ها نيز زياد مي شود (در بعضي موارد حتي بيشتر از 500 كيلوبايت ) در اينصورت كاربر براي مشاهده برنامه شما بايد بايد مدت زمان زيادي منتظر باشد.
CodeSplitting به شما اين امكان را مي دهد در زمان نوشتن برنامه با استفاده از دستور GWT.runAsync مكانهايي كه مي خواهيد برنامه split شود را مشخص كنيد. با اين كار قسمت هايي از برنامه كه با اين روش مشخص كرده ايد در زمان كامپايل درون يك فايل جداگانه كامپايل مي شود و در زمان اجرا نيز در هنگام بارگزاري اوليه برنامه برروي مرورگر كاربر بارگزاري نمي شود بلكه در صورت نياز بارگزاري مي شود.
به مثال زير توجه كنيد:
public class Hello implements EntryPoint {
public void onModuleLoad() {
Button b = new Button("Click me", new ClickHandler() {
public void onClick(ClickEvent event) {
Window.alert("Hello, AJAX");
}
});
RootPanel.get().add(b);
}
}
فرض كنيد مي خواهيم اين برنامه را طوري split كنيم كه كدهاي فراخواني Window.alert جداگانه كامپايل شود ، براي اين كار كد بالا را بصورت كد زير بازنويسي مي كنيم:
public class Hello implements EntryPoint {
public void onModuleLoad() {
Button b = new Button("Click me", new ClickHandler() {
public void onClick(ClickEvent event) {
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert("Code download failed");
}
public void onSuccess() {
Window.alert("Hello, AJAX");
}
});
}
});
RootPanel.get().add(b);
}
}
با اضافه شدن اين قابليت در GWT 2 شما مي توانيد بر حجم فايل هاي جاوااسكريپت ارسالي براي كاربران كنترل داشته باشيد.
http://saeedzarinfam.blogspot.com/20...splitting.html