Я меняю проект из "старой" структуры структуры браузера в "новую" структуру браузера или -сервера на стороне javascript с помощью require.js.
На клиенте я использую jQuery, размещенную на удаленном сервере, поэтому я начал с примера, который они приводят в использовании конфигурации приоритета для README:
<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>
Это действительно работает. Но я бы хотел экспортировать функциональность с главной страницы на веб-страницу HTML. Например:
<a class="button" href="#" onclick="MyApi.foo();">
<img src="foo.png" alt="foo" />Click for: <b>Foo!</b>
</a>
Прежде чем приступать к шаблону модуля AMD, я бы раскрыл функциональность из своих различных файлов, создав объект словаря в глобальном пространстве:
// main.js
var MyApi = {};
jQuery(document).ready(function($) {
// ...unexported code goes here...
// export function via MyApi
MyApi.foo = function() {
alert("Foo!");
};
});
Но я не знаю, каков правильный подход в require.js. Можно ли вставлять в HTML более теги require
внутри тегов <script>
, а затем называть модули так, чтобы их можно было использовать с веб-страницы? Или это всегда должно выполняться динамически внутри main.js, например $('#foobutton').click(...)
?