2

私はrequire.jsについて学んでいて、何かが足りないと思っています。ファイルをロードする方法がわかりません。

libディレクトリにjqueryファイルがあります。

これは動作しません:

jquery が chrome ネットワーク パネルにロードされていることを示しています。エラーは: Uncaught TypeError: undefined is not a function です。したがって、基本的に $ は未定義であると言っています。

require(['lib/jquery'],function($) {
  $(document).ready(function(){
    alert('hello');
  });
});

これは機能します:

require.config({
    paths: {
        jquery: 'lib/jquery'
    }
});


require(['jquery'],function($) {
      $(document).ready(function(){
      alert('hello');
    });

});

オンラインで見た他の例では、require.config でパスを設定する必要はありません。モジュールを定義するたびにこれを行う必要がありますか? この場合、require を使用していて、define を使用していないことはわかっていますが、define メソッドで同じ問題が発生しています。define を使用してモジュールを作成するたびに、require.config() を使用してパスを設定する必要があります。ここで何かが足りないと思います。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

2

これは、jquery によって行われる AMD 登録に対する制約です。「jquery」と呼ばれる名前付きモジュールとして明示的に登録されるため、そのためのパス構成が必要です。または、上記の場合、baseUrl を「lib」に設定すると、パス構成は必要ありません。

他のライブラリは通常、匿名モジュール登録を使用する必要があるため、ライブラリごとにパス構成を行う必要はありません。詳細はこちら

また、アンダースコアなどの一部のライブラリは define() を直接呼び出しませんが、shim configを使用することで一定レベルのサポートを得ることができます。

于 2012-08-01T04:32:23.950 に答える
1

コメントとJames の回答を反映するように更新します。

2 つの問題があります。

  1. jQueryは、Jamesが彼の答えで概説している理由から、構成でpaths設定するか、概説したコードでbaseUrl「lib」に設定する必要があります。

  2. 古いスクリプトを RequireJS でロードすることはできないことを覚えておく必要があります。AMD 規格に準拠したスクリプトのみを読み込むことができます。

そうは言っても、代わりにrequire-jqueryを使用することをお勧めします。

おそらく、jQuery がページにロードされていることを前提とする jQuery プラグインを使用することになり、それらはあなたが試みているアプローチでは機能しません。

于 2012-08-01T03:42:05.443 に答える