Aufrufen von Methoden in RequireJs-Modulen aus HTML-Elementen wie Onclick-Handlern

Ich ändere ein Projekt von einer "alten" Browser-ähnlichen Modulstruktur auf eine "neue" Browser-ähnliche.oder-serverseitiges Javascript Modulstruktur mitrequire.js.

Auf dem Client verwende ich eine offsite gehostete jQuery, also habe ich mit dem Beispiel in der begonnen"Prioritätskonfiguration verwenden" Technik der README:

<code><title>My Page</title>
<script src="scripts/require.js"></script>
<script>
require({
    baseUrl: 'scripts',
    paths: {
        jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min',
        jqueryui: ...,
        ...
        ... // bunch more paths here
    },
    priority: ['jquery']
}, [ 'main' ]);
</script>
</code>

Das funktioniert eigentlich in Ordnung. Aber ich möchte die Funktionalität von main auf die HTML-Webseite selbst exportieren. Zum Beispiel:

<code><a class="button" href="#" onclick="MyApi.foo();">
    <img src="foo.png" alt="foo" />Click for: <b>Foo!</b>
</a>
</code>

Bevor ich in das AMD-Modulmuster eingepasst habe, habe ich Funktionen aus meinen verschiedenen Dateien verfügbar gemacht, indem ich ein Dictionary-Objekt im globalen Bereich erstellt habe:

<code>// main.js

var MyApi = {};

jQuery(document).ready(function($) {
    // ...unexported code goes here...

    // export function via MyApi
    MyApi.foo = function() {
        alert("Foo!");
    };
});
</code>

Aber ich weiß nicht, was der richtige Ansatz in require.js ist. Ist es in Ordnung, im HTML mehr zu setzenrequire Aussagen innerhalb von<script> Tags und dann Module benennen, damit sie auf der Webseite verwendet werden können? Oder sollte dies immer dynamisch innerhalb von main.js erfolgen, wie z$('#foobutton').click(...)?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage