I'm not 100% sure I understand what you're looking for, since I'm not completely familiar with the way MyFaces components do things today. But here are a few thoughts:

1) If you're going to use Dojo, I would suggest that you either use the "kitchen sink" profile (that includes everything) or one that includes what all of the widgets in your library need, rather than trying to load only what each widget needs. While that would result in a larger dojo.js file than each widget might need by itself, it means that you get a one-time download to the browser that is then cached, ultimately leading to better performance for the page as a whole.

2) If you render code on the fly that has something like 'dojo.require("foo")', then Dojo will request "foo" and any dependencies of "foo", as it would in development mode, but only if they're not already loaded into the browser (e.g. through the profile build). While this isn't what you want as a general solution, it does ensure that your code doesn't break if something got left out of the profile build. Also note that "foo" need not be part of Dojo itself, so you can use Dojo to load your own code too.

3) In theory (meaning, I don't know if anyone has tried it ;), you could generate profile builds on the fly that include only the pieces you need. This sounds cool, but it's not really practical in the long run.The problem is that each custom on-the-fly would be a separate entity as far as the browser is concerned, so you'd be downloading it every time and it wouldn't be cached. Using the approach in #1 is a better way of handling this.

Did I answer your question? I'm not sure. If not, let me know what I'm missing, and I'll try again. ;-)

--
Martin Cooper


On 1/3/06, Werner Punz <[EMAIL PROTECTED]> wrote:
Hi Martin, thanks for the clarification,
but one question, given that myfaces has its own
loading mechanism which renders the includes dynamically.
Does dojo have something which could support this.
The reason why I am asking is, that
usually the components basically determine themselves
(with support from myfaces of course) which includes they need.
And the includes are rendered dynamically away without causing
double includes.

Thus you get the same flexibiliy of the dynamic includes DOJO has solved
on _javascript_ level without the speed tradeoffs of the development
include of dojo, or the size tradeoffs of the static build of the parts
you need.
Are there any supportive infrastructures for such a case?

Werner



Martin Cooper wrote:
>
>
> On 1/3/06, *Werner Punz* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:
>
>     Martin Marinschek wrote:
>      > In any case we should wait what ADF Faces brings to the table with
>      > regards to _javascript_, and then see how we merge in the best way.
>      >
>      > regards,
>      >
>      > Martin
>      >
>
>     Well one thing, I noticed with DOJO after checking it out extensively is
>     the slow loading times, since it synchronsously loads itself via xmlhttp
>     request (and probably runs into issues there due to non caching of
>     _javascript_s within the static browser cache).
>
>
> As you checked it out, you must have missed one of the most
> sophisticated and powerful parts of the toolkit. ;-) The slow loading
> times you are seeing are almost certainly because you are looking at it
> in "development mode". In development mode, the toolkit figures out your
> dependencies and loads them on the fly. This is cool because you don't
> need to worry about all the indirect needs of your code, and you can
> more quickly get your own code working. It does, however, result in the
> slow load times you noticed. (The files _do_ get cached by the browser,
> though, so that part is not a problem.)
>
> In "production mode", you would either deploy a pre-built Dojo profile
> or build and deploy your own custom profile. A profile is essentially a
> definition of which packages you need in your build, and the build
> system uses the same technique as is used in development mode to
> determine which code to include in the profile build. The build system
> produces a single compressed output file, dojo.js, that contains all of
> the packages you need (and none of the ones you don't), resulting in
> much, much, much faster load times in production mode.
>
> Defining a custom profile is really simple, and building it is just as
> simple. Check it out!
>
> --
> Martin Cooper
>
>
>     This is in my opinion unfortunately a huge showstopper for the otherwise
>     excellent lib.
>     Loading times of 20 seconds for a page using dojo are within the normal
>     timeframe.
>
>     Speaking of showstoppers, this is definitely a huge one for dojo, and
>     almost as big or even bigger than the possible interference problems of
>     Prototype, because once you enable dojo your pageloading times start to
>     crawl.
>
>     :-(
>
>
>


Reply via email to