[
https://issues.apache.org/jira/browse/CB-304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13225530#comment-13225530
]
Patrick Mueller commented on CB-304:
------------------------------------
The safest thing to do is to not actually expose our {{require()}}/{{define()}}
as "globals" - either properties of "window" or as "vars" off the global
context.
I recently did this exact same thing to weinre, which also has
{{require()}}/{{define()}}, and I anticipated problems, so fixed it in weinre.
see: https://issues.apache.org/jira/browse/CB-293
The basic idea is that we instead just expose {{require()}}/{{define()}} as
properties of {{Cordova}} instead. If someone wants to use our
{{require()}}/{{define()}} themselves, they'll have to opt-in by:
{noformat}
var require = Cordova.require
var define = Cordova.define
{noformat}
We can also do this ourselves within the cordova-x.y.z.js script, by having the
whole script wrapped by a function which sets local versions as above.
We need to be a little careful to tell folks that they shouldn't use
{{Cordova.require()}} instead of {{require()}} in their modules. Every module
is passed their very own version of {{require()}} that they *MUST USE*, as this
contains contextual information about the module. Our version of {{require()}}
doesn't do this, but eventually it will need it to handle 'relative' requires
{{require(".|../foo")}}.
The only time you'd use {{Cordova.require()}} is in the "root" modules which
are loaded from plain old JavaScript code.
> Cordova's require/define can't be used with Dojo's require/define
> -----------------------------------------------------------------
>
> Key: CB-304
> URL: https://issues.apache.org/jira/browse/CB-304
> Project: Apache Callback
> Issue Type: Bug
> Components: CordovaJS
> Reporter: Patrick Mueller
>
> summarized from
> https://groups.google.com/d/topic/phonegap/D1cm3kQzKJ0/discussion
> {quote}
> I was targeting Android and used Phonegap 1.2.0 in combination with Dojo 1.7
> which worked fine. Now I switched to Phonegap 1.5.0 and found a severe
> problem. The new module system in Phonegap 1.5.0 uses global functions
> "define" and "require". Dojo 1.7 does the same for its own module system.
> Hence, whatever is loaded first, breaks the other one.
> Could the Phonegap developers consider to modify the module system in a way
> that it is compatible with Dojo's?
> {quote}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira