require.jsを使用して、プロジェクトを「古い」ブラウザ スタイルのモジュール構造から「新しい」ブラウザまたはサーバー側のJavaScriptモジュール構造に変更しています。
クライアントでは、オフサイトでホストされている jQuery を使用しているため、READMEの「use priority config」テクニックで提供されている例から始めました。
<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 Web ページ自体にエクスポートしたいと考えています。例えば:
<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 での正しいアプローチが何であるかはわかりません。タグ内にHTMLrequire
ステートメントを追加<script>
して、Web ページ内から使用できるようにモジュールに名前を付けてもよろしいですか? または、これは常に main.js 内で動的に行う必要があり$('#foobutton').click(...)
ますか?