1

サーバー側からの重要な設定が必要なので、メイン ファイルを HTML ファイルに配置する必要があります。しかし、私の問題は、エイリアスファイルがまだ読み込まれているが、変数として利用できないことです。(また、app.js ファイルやその他の定義済みファイルにはありません。) したがって、これを行うと: (HTML ページの下部を参照)

require([
  'jquery'
   'app'
], function($, App) {
   alert($);
   App.initialize();
});

アラートには未定義の変数が表示されますが、ロードしたファイルを見ると. jQuery ファイルが読み込まれます。(アンダースコアとバックボーン変数で同じ問題がありますが、アプリ変数ではありません。エイリアスだけの問題です。) この問題を解決する方法を知っていますか?

<html>
<head>
<title>Domain.net</title>

<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/style.css" />
<script src="js/lib/modernizr.js"></script>

<script src="js/lib/require.js"></script>
<script type="text/javascript">
// Require.js allows us to configure shortcut alias
require.config({
    baseUrl: "js",
    paths: {
        jquery: 'lib/jquery',
        underscore: 'lib/underscore',
        backbone: 'lib/backbone',
        templates: '../templates'
    }
});

define('config', function() {
    return {
        /** My serverside config */
    }
});

//Load the App
require([
    'jquery',
    'app'
], function($, App) {
    alert($);
    App.initialize();
});
</script>

4

1 に答える 1

1

使用しているjQueryのバージョンはわかりませんが、1.7以上でない場合は、デフォルトでamdをサポートしていません。これにより、が取得される理由が説明されますundefined。その場合の最善の解決策は、それを更新することです。

または、構成にシムを追加してみexports: jQueryてください。

require.config({
    baseUrl: "js",
    paths: {
        jquery: 'lib/jquery',
        underscore: 'lib/underscore',
        backbone: 'lib/backbone',
        templates: '../templates'
    },
    shim: {
        jquery: {
            exports: 'jQuery'
        }
    }
});

また、サーバー側の構成を設定する方法は競合状態になりやすいことに注意してください。この回答を参照してください。

于 2012-11-15T22:42:00.083 に答える