rave-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erin Noe-Payne <erin.noe.pa...@gmail.com>
Subject Re: Require.js in 0.22
Date Wed, 19 Jun 2013 13:28:16 GMT
Specifically, the idea of require js is to take all references off of
the global namespace and to build out and resolve a dependency tree
for your client side code.  So if we made it optional, then someone
who wanted to take advantage of the feature would need to overlay any
place where there is a reference to the global rave object. That
includes jsps where there is a script block that uses rave.*, and wrap
that in a require block. You would also need to overlay the java class
that inserts rave.registerWidget(...) onto the page and wrap those in
require blocks. Also any jsp that has an onclick="rave.*" event
handler, those would need to be moved to jquery bindings and wrapped
in require blocks. Once you had that you would overlay the
rave_script.js tag so that instead of link all the scripts, you just
reference require.js with a data-main attribute pointing to your
bootstrapping script. (See http://requirejs.org/docs/start.html).

If instead we make a breaking change, then we would do all of the
above work on trunk. An implementer who wanted to go to 0.22 would
then be responsible for updating their scripts to be written as AMD
modules (http://requirejs.org/docs/api.html#define). The script is
wrapped in a require block, remove all references to global namespace
objects and instead require those in. Any additional third party
scripts you use will need to be added to the require config
(http://requirejs.org/docs/api.html#jsfiles).


On Tue, Jun 18, 2013 at 6:24 PM, Chris Geer <chris@cxtsoftware.com> wrote:
> What would be required exactly?
>
> On Tuesday, June 18, 2013, Erin Noe-Payne wrote:
>
>> If we make it optional, we will basically be conditionally AMD
>> defining the rave js, and to actually use require it would be on an
>> implementer to overlay every file that has script tags or inline
>> "onclick" events. In other words it would be a big pain and not really
>> worth it unless you really wanted the value of require.js immediately
>> - at MITRE we would do that though. It would mostly just be giving 1
>> release warning that the old method will be deprecated.
>>
>> Personally I think the breaking change will be cleaner and more
>> consistent with the end state of the angular application. But as it
>> will force some amount of work on current implementations wanting to
>> go to 0.22, I don't want to go that route unless there is buy-in.
>>
>> On Tue, Jun 18, 2013 at 6:10 PM, Chris Geer <chris@cxtsoftware.com<javascript:;>>
>> wrote:
>> > On Mon, Jun 17, 2013 at 5:32 AM, Matt Franklin <m.ben.franklin@gmail.com<javascript:;>
>> >wrote:
>> >
>> >> On Mon, Jun 17, 2013 at 8:29 AM, Sean Cooper <secooper@apache.org<javascript:;>>
>> wrote:
>> >>
>> >> > I am ok with a breaking change as long as it is clearly called out
in
>> the
>> >> > release notes.  I am worried that someone will get caught off guard
by
>> >> this
>> >> > break.
>> >> >
>> >>
>> >> IMO, if it isn't a significant effort we should deprecate the old way in
>> >> 0.22 and go with the optional support for Require.js.
>> >>
>> >
>> > How hard will it be to turn on the feature? If it's overly complicated
>> > there might not be much value in even putting it in as an optional
>> feature.
>> > If it's not too bad and we can document it well then optional is fine.
>> > Otherwise I wouldn't be against the breaking change since we are still
>> > pre-1.0 and breaking changes are pretty normal (0.21 was breaking as
>> well).
>> >
>> > Chris
>> >
>> >>
>> >>
>> >> > On Jun 16, 2013 11:08 PM, "Erin Noe-Payne" <erin.noe.payne@gmail.com<javascript:;>
>> >
>> >> > wrote:
>> >> >
>> >> > > Hey All,
>> >> > >
>> >> > > As I mentioned in the rave-angular thread, Require.js will be
an
>> >> > > important part of the angular branch architecture. I am thinking
it
>> >> > > would be reasonable to introduce AMD support into the trunk even
>> >> > > before we release the angular branch, to offer the performance
>> >> > > benefits sooner and to introduce the new paradigm.  My initial
>> thought
>> >> > > is to make AMD support optional and off by default, to avoid
>> breaking
>> >> > > changes.  That would involve...
>> >> > >
>> >> > > - A couple new rave core and rave portal js files introduced to
>> align
>> >> > > with require.js modules, jsp tags updated accordingly.
>> >> > > - Each of those js files checks for the existence of requirejs
in
>> the
>> >> > > environment and wraps itself in a define() if yes, otherwise acts
>> the
>> >> > > same as before.
>> >> > >
>> >> > > In this scenario anyone who wanted to take advantage of require.js
>> >> > > would need to do some amount of overlaying to introduce require,
>> >> > > update the script jsp tags, and so on.
>> >> > >
>> >> > > Alternatively, if there is interest we could introduce require
as a
>> >> > > breaking change for 0.22 and integrate the require.js optimizer
into
>> >> > > the build process. The advantage would be no need to overlay to
get
>> >> > > AMD support, the disadvantage is any implementation updating to
0.22
>> >> > > would need to update their container scripts to be compatible
with
>> >> > > AMD. In either case this would have no impact on gadgets.
>> >> > >
>> >> > > Thoughts?
>> >> > >
>> >> >
>> >>
>>

Mime
View raw message