私の Web アプリケーションには<script>
、相対的な依存関係の順にタグを介して以前に読み込まれたいくつかの JavaScript ファイルがあります。現在、require.js を使用してそれらを再編成し、それらを蓄積して本番用に縮小しています。
手始めに、AMD カプセル化をまだ行わずに、すべてのファイルをグローバル (ウィンドウ) コンテキストに単純にロードしたいと思います。
require([
'jquery'], function() {
require([
'jquery-ui'], function() {
require([
'jquery-ui.touch-punch',
// [...]
]);
});
});
ここでの考え方'jquery'
は、グローバル (ウィンドウ コンテキスト)jQuery
変数を定義し、 (より良いタッチ サポートのために)'jquery-ui'
セットjQuery.ui
と'jquery-ui.touch-punch'
変更を行うというものです。jQuery.ui
これは、そのまま実行する場合、つまり最適化なしで実行する場合にうまく機能します。ただし、1 つのファイルにコンパイルし、RequireJS オプティマイザーを使用して縮小すると、次のエラーが発生します。
Uncaught TypeError: Cannot read property 'mouse' of undefined
これは、 にアクセスしようとしている回線で発生しますjQuery.ui.mouse
。
ブラウザ コンソール内でjQuery
は、ウィンドウ コンテキストで正しく設定されていますが、jQuery.ui
未定義です。ただし、手動で実行すると、期待どおりrequire(['jquery-ui'])
に設定jQuery.ui
されます。
最適化後に jQuery UI の動作が異なるように見えますが、その正確な方法や理由はわかりません。私は何を間違っていますか?