I have been thinking about all of these questions for a while, Don. In my opinion, I do not think that Cordova should mandate a specific way in which the JavaScript side of a plugin should be written or laid out. The only requirement really boils down to using the `exec` method.
That said, the core APIs, which are just plugins, are wrapped in a cordova.define call and use cordova.require to get references to any other internal Cordova javascript bits, so I would _recommend_ users use this pattern (exactly how your second phonegap-toast.js link does, Don). It is cleaner as it does not trample over any globals. As for where to assign the plugin code, again, I think it is up to the plugin. I do not think it matters if it is assigned to navigator or to window.plugins. Whatever works for the user. However, assigning to the `cordova` object is not recommended as it may trample over variables/properties that the cordova framework needs to function. Finally, assigning to plugins.xml. No way to do it programmatically / at run-time at this time, and I do not think we will do that in the future (security considerations: you want to vet out which native bits will be run before build time). On 7/5/12 7:12 PM, "Don Coleman" <[email protected]> wrote: >Is there a new recommended way to include javascript for plugins? > >Previously I just jammed an object onto navigator or a global variable > > navigator.toast = new Toasty(); > >https://github.com/m00sey/Toasty/blob/f9dbf58e11cf4ecf386f70331960d33e8756 >6dd9/assets/www/phonegap-toast.js > >I've rewritten this plugin's javascript as a module and I'm >recommending that the user requires the module in their code with > > var toast = cordova.require('toast'); > >https://github.com/don/Toasty/blob/bf61ff3c738cebcd285f82490920cf713ac095a >a/assets/www/phonegap-toast.js > >Is this the recommended way? > >It works fine, it's just an extra step for the user, and different >from using a builtin cordova function like >navigator.notification.vibrate. > >Should I still assign the plugin code to navigator or cordova? >Is there a way to have my plugin js required by plugin.xml, >cordova.addPlugin or some other function??? >Are users to need to require built-in cordova for 2.0+?
