1

次のように、RequireJSが単純なモジュール値を変数に直接割り当てようとしているという奇妙な動作に気づいています。

App.tables = require(['appTables']);

この呼び出しの結果、App.tablesには次の関数が含まれます。

localRequire(deps, callback, errback)

私のappTables.jsは次のようになります。

define({
  users: {
    name: 'tables.users',
    data: {
      name: {
        visible: true,
        hide: false,
        display: 'Name'
      },
      surname: {
        visible: true,
        hide: false,
        display: 'Surname'
      }
    }
  }
});

確かに、古典的な方法でそれを割り当てようとすると、うまくいきます。

require(['appTables'], function(appTables) {
    App.tables = appTables;
});

では、私の最初のアプローチの何が問題になっていますか?オブジェクトの代わりに関数を返すのはなぜですか?ありがとう!

4

1 に答える 1

3

使用している簡略化されたCommonJS形式(App.tables = require('appTables'))は、モジュールの依存関係の配列を関数の引数に割り当てるamd形式の代わりに、モジュール内で使用することを目的としています。main.jsモジュールで使用するためのものではありません(そのための標準require('appTables', function(appTables) { ... });形式を使用するだけです)。

requireモジュールでは、呼び出しをdefineブロックでラップし、モジュール名( 'appTables')を渡します。

define(function(require) {
  appTables = require('appTables');
  ... do something with appTables ...
});

詳細については、 SimplifiedCommonJSWrapperのドキュメントを参照してください。

参照:代替requirejsを使用する理由define:define(function(require){...}

于 2013-01-05T01:25:01.790 に答える