15

requirejs を使用すると、私の main.js は次のようになります

requirejs.config({
    baseUrl: '/javascript/',
    paths: {
        jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min',
        async: 'requirePlugins/async',
            hbs: 'hbs'
    },
    waitSeconds: 7
});
define(['common'], function () {
    loadFonts();
});

main.js は、スクリプト呼び出しでページに含まれています

<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>

Common は、Web サイトの基本的な関数であり、jquery doc の準備が整った関数などであり、define 呼び出しでラップされています。

define(['jquery'], function() {
    //jQuery dependant common code
});

これは正常に機能し、Google CDN から jQuery が読み込まれ、コードが実行されます。しかし、main.jsのロード後にrequire呼び出しを追加すると

<script data-main="/javascript/main.js" src="/javascript/require-2.0.1.js"></script>
require(['jquery'], function ($) {
    //code
});

jquery は、Google CDN への定義済みパスではなく、/javascript/jquery.js から要求されます。私はまだrequirejsの新人ですが、他のリクエストが発生する前にパスを定義する必要があるように思えます.誰かが私が間違っていることを理解するのを手伝ってくれますか?

4

6 に答える 6

7

data-mainこれは、RequireJS スクリプト タグで属性を使用したことが原因である可能性があると思います。それを解析するには、RequireJS 自体を読み込んで解析する必要があります。私のテスト (特に IE9 の場合) では、ブラウザーは RequireJS 構成ファイル (属性で指定されたもの) を解析する前に、RequireJS スクリプト タグの直後に続くスクリプト タグをダウンロードして実行しますdata-main

これを回避するために、data-main属性の使用をやめ、代わりに構成ファイルを通常のスクリプト タグとして RequireJS スクリプト タグの直後に配置しました。

具体的には、これは次のようになります(サンプルを使用):

<script src="/javascript/require-2.0.1.js"></script>
<script src="/javascript/main.js"></script>
于 2012-10-15T20:56:20.803 に答える
5

require js をロードする前に config ステートメントを置いたのかもしれません。

最初に require.js をロードし、その後に設定コードを配置してから、require(['jquery'], ...); を呼び出す必要があります。

/javascript/ を検索する理由は、require.js ファイルがそこにあり、それがデフォルトのベース URL であるためです。

あなたの設定がrequire.jsによって使用されることはありません。

require config については、このチュートリアルを参照してください。

于 2012-06-05T10:58:25.297 に答える
0

特定のモジュールの場所を構成するmap代わりに使用することをお勧めします。paths

paths完全なモジュールパスではなく、インクルードを簡素化/構成するためのショートカット/プレフィックスを対象としています。

グローバルに適用するマッピングは、オブジェクトのアスタリスク ( *) キーの下に配置する必要があることに注意してください。map

于 2014-10-07T14:10:04.677 に答える
-2

requireブロックに完全なURLを埋め込むことができると思います。お気に入り:

require(['http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min'], function ($) {
   //code
});

ところで、jqueryリンクは無効です。

于 2012-06-05T10:06:27.117 に答える