Perhaps my terminology is wrong but ALL plugins define how they are loaded.

Either (old style) window.plugins = ...
or (new style) cordova.define(...

My fundamental point is they shouldn't. I don't want my plugins loaded in 
either of these ways. The loading of plugins should be separate to the plugin 
definition.
Hence my suggestion of;

cordova.pluginLoader(...)

In this pattern pluginLoader could either have multiple different modes or 
developers could override it (or both).
At the moment I am having to change each plugin to not define its loading 
implementation.


> From: agri...@chromium.org
> Date: Fri, 21 Jun 2013 10:22:35 -0400
> Subject: Re: Suggestion - pluginLoader
> To: dev@cordova.apache.org
> 
> For your actual app, you're free to use any JS loader that you'd like.
> 
> Are there really many existing Cordova plugins that use alternate module
> package definitions?
> 
> 
> On Fri, Jun 21, 2013 at 9:39 AM, J Prince <princej.w...@hotmail.co.uk>wrote:
> 
> > Hi Andrew,
> >
> > My main point was to make the actual plugin javascript definitions more
> > flexible.
> > That way it would support more unusual developer requirements (such as
> > mine).
> > If the plugin definitions did not contain any loader implementation then
> > the same definition can be used different ways by different developers.
> >
> > Currently any existing plugins that I want to use I am making my own copy
> > of and modifying to suit my project.
> > I found this annoying and produced my suggestion based on that experience.
> >
> > I suppose it is as much for developer simplicity as anything else.
> > A format that supported different use cases would be better for me!
> > It would also mean that the cordova team could more easily change the
> > javascript plugin loader in future without breaking existing plugins.
> >
> > I hadn't thought about dynamically loading the native side of plugins.
> > I was just assuming that would always be loaded.
> >
> >
> > > From: agri...@chromium.org
> > > Date: Fri, 21 Jun 2013 09:12:42 -0400
> > > Subject: Re: Suggestion - pluginLoader
> > > To: dev@cordova.apache.org
> > >
> > > Hi Jonathan,
> > >
> > > First, thanks for a well-written proposal. At least for me, I'm not
> > really
> > > sure that there is enough of a problem with the current approach that
> > would
> > > justify changing it. That said, business is always an issue, and bumping
> > > your thread was the right thing to do :)
> > >
> > > For Android and iOS, the large majority of plugins require native code in
> > > order to be useful, so I don't think that having plugin JS be dynamically
> > > seems that useful without being able to dynamically load the native parts
> > > of it.
> > >
> > > You said that you're serving your app via HTTP. I think your best bet
> > would
> > > be to concat all of your plugin JS together would be by far your biggest
> > > performance boost rather than try to selectively load them.
> > >
> > > Until very recently, Cordova's module system didn't involve a loader at
> > > all, and required that all modules be defined ahead of time. Now, we
> > > actually do load plugin .js files during start-up, but still not
> > on-demand.
> > > So, in my mind we really have two things:
> > > 1. A registry
> > > 2. A boot-up process.
> > >
> > > To be clear - is it that you want to change the registry part, or is it
> > > just that you want to have plugin .js loaded on-demand? Are you concerned
> > > about the native side of the plugins?
> > >
> > > One thing I think maybe we should add is the ability to disable the
> > > start-up plugin_loader.js logic for when people want to package the .js
> > > themselves.
> > >
> > >
> > >
> > >
> > >
> > > On Fri, Jun 21, 2013 at 8:30 AM, J Prince <princej.w...@hotmail.co.uk
> > >wrote:
> > >
> > > > So it's been about a week now and I haven't really had any feedback on
> > > > this.
> > > > https://github.com/jxp/cordova.pluginLoader
> > > >  I'm not sure if this means;
> > > >
> > > > a) Everyone is too busy
> > > > b) Everyone assumed someone else would respond
> > > > c) No-one is that interested in plugin javascript definitions
> > > > d) You've had similar discussions before and don't want to start THAT
> > again
> > > >
> > > >
> > > > > From: princej.w...@hotmail.co.uk
> > > > > To: dev@cordova.apache.org
> > > > > Subject: RE: Suggestion - pluginLoader
> > > > > Date: Tue, 18 Jun 2013 16:55:19 +0100
> > > > >
> > > > > I have (briefly) looked at Harmony loaders before but that is a spec
> > for
> > > > a future javascript language version.
> > > > > I have found a module loader that I wish to use (require.js).
> > > > >
> > > > > My point is that the current suggested module definition for cordova
> > > > plugins INCLUDES a loader implementation.
> > > > >
> > > > > I am suggesting that the loader implementation be removed from the
> > > > plugin to a new method cordova.pluginLoader
> > > > > This would make the plugins cleaner (as they would only describe
> > their
> > > > own behaviour) and it would also allow cordova or app developers to
> > > > change/customize the loader implementation as needed.
> > > > >
> > > > > My suggested approach would result in plugins that could be loaded in
> > > > multiple different ways including (but not limited to); "classic"
> > > > window.plugins, cordova.define and require.js
> > > > >
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: J Prince [mailto:princej.w...@hotmail.co.uk]
> > > > > > Sent: Monday, June 17, 2013 7:27 AM
> > > > > > To: dev@cordova.apache.org
> > > > > > Subject: RE: Suggestion - pluginLoader
> > > > > >
> > > > > > There are a few main reasons.
> > > > > >
> > > > > > 1. The app I am working on is an Enterprise app. We are designing
> > the
> > > > app as a Cordova shell that re-directs to all the html content. This
> > means
> > > > that we have to dynamically load a different cordova.js (depending on
> > > > platform) following the redirect.
> > > > > > So we are actually unable to do anything other than dynamically
> > load
> > > > plugins once the platform specific cordova.js is loaded
> > > > > >
> > > > > > 2. Some of the plugins will be used incredibly rarely. It doesn't
> > seem
> > > > necessary to always load plugins until they are needed.
> > > > > >
> > > > > > 3. We are building with a single page architecture so don't want to
> > > > end up with lots of script includes in the index.html page.
> > > > > > The define/require pattern feels much cleaner and better
> > > > compartmentalized.
> > > > > > Our main page currently has 2 script includes: require.js and
> > jqmobi.
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > >
> > > >
> >
> >
                                          

Reply via email to