Re: MVC and Code Splitting

2012-01-15 Thread Xybrek

On 1/15/2012 4:12 AM, Thomas Broyer wrote:



On Saturday, January 14, 2012 8:12:44 PM UTC+1, Xybrek wrote:

In my application there are many views and controllers, however not all
are needed at once, mostly the view that is loaded depends on the URL
fragment(s).

In what way or pattern a Controller and View be wrapped in a
GWT.runAsync so that only controllers and views needed are loaded?

I just need to get some ideas on how I will implement this.

In my case, I have a home-grown MVC. My application parse the Url
fragment and then show() the appropriate view. In which the
parameter of
the show() function is a key String that will then be used to get the
views that are stored in a HashMap.

Everything, the Controllers, Models and Views are instantiated during
onModuleLoad()

Any ideas?


Start by "lazy instantiating" your components, then throwing runAsync in
will become much easier.

If you have interfaces, you could try AsyncProxy instead; but if you
want lazy-loading, start by architecturing your app around that pattern.

Before:
// in onModuleLoad
map.put("foo", createFoo());
map.put("bar", createBar());
// then retrieving the objects:
return map.get(key);

After:
//when retrieving the objects
Object o = map.get(key);
if (o == null) {
if ("foo".equals(key)) {
o = createFoo();
} else if ("bar".equals(key)) {
o = createBar();
}
map.put(key, o);
}
return o;

Adding runAsync would mean changing the getViewFromToken from
synchronous to asynchronous, with a RunAsyncCallback as an additional
argument.

--
You received this message because you are subscribed to the Google
Groups "Google Web Toolkit" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-web-toolkit/-/aSVUUp_8tRMJ.
To post to this group, send email to
google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.



That's a nice pattern. I did applied this approach and works. However, 
my problem is not solved yet, because the GWT-Recaptcha is still causing 
request to a external site even if I have used that approach.


I am yet to understand how to fix this thing.

--
You received this message because you are subscribed to the Google Groups "Google 
Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



Re: MVC and Code Splitting

2012-01-14 Thread Thomas Broyer


On Saturday, January 14, 2012 8:12:44 PM UTC+1, Xybrek wrote:
>
> In my application there are many views and controllers, however not all 
> are needed at once, mostly the view that is loaded depends on the URL 
> fragment(s).
>
> In what way or pattern a Controller and View be wrapped in a 
> GWT.runAsync so that only controllers and views needed are loaded?
>
> I just need to get some ideas on how I will implement this.
>
> In my case, I have a home-grown MVC. My application parse the Url 
> fragment and then show() the appropriate view. In which the parameter of 
> the show() function is a key String that will then be used to get the 
> views that are stored in a HashMap.
>
> Everything, the Controllers, Models and Views are instantiated during 
> onModuleLoad()
>
> Any ideas?
>

Start by "lazy instantiating" your components, then throwing runAsync in 
will become much easier.

If you have interfaces, you could try AsyncProxy instead; but if you want 
lazy-loading, start by architecturing your app around that pattern.

Before:
// in onModuleLoad
map.put("foo", createFoo());
map.put("bar", createBar());
// then retrieving the objects:
return map.get(key);

After:
//when retrieving the objects
Object o = map.get(key);
if (o == null) {
  if ("foo".equals(key)) {
o = createFoo();
  } else if ("bar".equals(key)) {
o = createBar();
  }
  map.put(key, o);
}
return o;

Adding runAsync would mean changing the getViewFromToken from synchronous 
to asynchronous, with a RunAsyncCallback as an additional argument.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/aSVUUp_8tRMJ.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



MVC and Code Splitting

2012-01-14 Thread Xybrek
In my application there are many views and controllers, however not all 
are needed at once, mostly the view that is loaded depends on the URL 
fragment(s).


In what way or pattern a Controller and View be wrapped in a 
GWT.runAsync so that only controllers and views needed are loaded?


I just need to get some ideas on how I will implement this.

In my case, I have a home-grown MVC. My application parse the Url 
fragment and then show() the appropriate view. In which the parameter of 
the show() function is a key String that will then be used to get the 
views that are stored in a HashMap.


Everything, the Controllers, Models and Views are instantiated during 
onModuleLoad()


Any ideas?

--
You received this message because you are subscribed to the Google Groups "Google 
Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.