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(...)
?