web-dev-qa-db-ja.com

Firebug / Chromeコンソールからrequire.jsモジュールを操作しますか?

Require.jsを始めたばかりです。私はjquery、いくつかのプラグイン、およびいくつかの独自のモジュールを正常にラップしました。 Firebug(またはGoogle ChromeのJSコンソール)から自分のモジュール(またはjquery)を操作しようとしていますが、あまりうまくいきません。

コンソールからこれらのモジュールにアクセスする正しい方法は何ですか?

40
erikcw

いくつかのメソッドを返す/app/scripts/methodsModule.jsモジュールがあるとしましょう:

define({
    someMethod: function() {
        // do stuff
    },
    anotherMethod: function() {
        // do some more stuff
    }
});

Data-mainファイル/app/scripts/main.jsには、次のものが含まれています。

require(['methodsModule'], function(methods) {
    methods.someMethod() // call someMethod
    methods.anotherMethod() // call anotherMethod
})

RequireJSがdata-mainをロードすると、次のように、JavaScriptコンソールのコマンドラインからrequireJSによってすでにロードされているすべてのモジュールにアクセスできます。

>> methods = require('methodsModule'); // requireJS has module methodsModule stored
>> methods.someMethod() // call someMethod
>> methods.anotherMethod() // call anotherMethod

Require()またはdefine()の呼び出しによってモジュールがロードされていない場合は、モジュールがロードされた後にrequire関数が呼び出すための独自のコールバックを渡す必要があります。

>> myCB = function(methods) { methods.someMethod() }
>> require(['methodsModule'], myCB)

そうでない場合、requireJSは、モジュールがまだロードされていないことを示すエラーをスローします。

54
benastan

コールバックを使用しない方法があります。

以前にコンソールまたはアプリケーションでモジュールが必要なかった場合は、最初にそれを要求するだけです。

require(['methodsModule']);

その後、それにアクセスするために「動的」要求を使用できます。

require('methodsModule').someMethod();
15
Valentin Nemcev