7

AMD用のrequirejsとjqueryを使用して簡単なデモを試しています。以下は私のフォルダ構造構造です:

├── index.html
└── js
    ├── lib
    │   ├── jquery.js
    │   └── require.js
    └── main.js

私の index.html ファイルには、次のコンテンツがあります。

  <head>
    <script data-main="js/main" src="js/lib/require.js"></script>
  </head>

  <body>
    <div id="hello">    </div>

  </body>

私の main.js ファイルは次のようになります。

define(['lib/jquery'], function ($) {

  $("#hello").html("Wow this works!");

});

しかし、そうすると、エラーが発生します: Uncaught TypeError: undefined is not a function main.js の 3 行目で。

なにが問題ですか?理解できません?

4

3 に答える 3

4

この問題を読む: https://github.com/jrburke/requirejs/issues/435

私の理解では、これはjqueryがそれ自体を定義する方法によるものです。名前付き定義呼び出しを使用しています。

define( "jquery", [], function () { return jQuery; } );

したがって、必要な'lib/jquery'場合は機能しません。それが機能するためには、正確に必要とする必要があります'jquery'

編集:

jquery をフォルダーに配置し、ベース URL を( )lib/の親フォルダーにする場合は、次のような shim を使用できます。lib/lib/../

requirejs.config({
  baseUrl: 'js',
  shim: {
    'lib/backbone': {
      deps: ['lib/underscore', 'lib/jquery'],
      exports: 'Backbone'
    },
    'lib/underscore': {
      exports: '_'
    },
    'lib/jquery': {
      exports: '$'
    }
  }
});

requirejs(['lib/jquery'], function($) {
  // use $
});
于 2013-06-03T03:39:05.150 に答える
1

main.js の最初の行に「$」を付けずに例を試してみましたが、正しく機能しました。

main.js を修正しました:

define(['lib/jquery'], function () {
     $("#hello").html("Wow this works!");
});
于 2012-10-19T23:56:53.033 に答える
0
<script data-main="js" src="js/lib/require.js"></script>
<script src="js/main.js"></script>

is what you want. the data-main attribute just points to what should be the root of relative request for it. So you'll need to load in main directly or through an script tag or a require() call in an inline script block

于 2012-10-20T00:51:34.817 に答える