1

を使い始めましたがRequireJS、依存関係は正常に読み込まれますが、コールバック メソッドではすべての依存関係がundefined.

require.config({
    baseUrl: 'js',
    paths: {
        angular: '../lib/angular/angular',
        myApp: 'app',
        states: 'app-states',
        controllers: 'controllers',
        filters: 'filters',
        services: 'services',
        oauth2: 'oauth2'
        //async: 'lib/require/async'
    },
    shim: {
        'myApp': {
            deps: ['angular']
        },
        'states' : {
            deps: ['angular', 'myApp']
        },
        'controllers': {
            deps: ['angular', 'myApp']
        },
        'filters': {
            deps: ['angular', 'myApp']
        },
        'services': {
            deps: ['angular', 'myApp']
        }       
    }
});

require(['angular', 'myApp', 'states', 'controllers', 'filters', 'services'], function(angular, myApp, states, controllers, filters, services) {
    'use strict';
    console.log('requireJs done');
    console.log(angular);
    console.log(myApp);
    angular.bootstrap(document, ['myapp']);
}); 

が必要なだけの場合angular、コールバック メソッドは呼び出されません。なぜだろうと思っていました。

require(['angular', function(angular) {
    console.log("requireJS done");
}]);
4

3 に答える 3

2

これらのライブラリから値をエクスポートしていません。シムの場合、それらを参照する前に、エクスポートする変数を指定する必要があります。何もエクスポートしていないため、変数は null に設定されています。

エクスポートは次のようになります。

shim: {
    "angular": {
        exports: "angular"
    }
}

AMD/Requirejs は、ロードするファイルから値を取得し、それをコールバック関数の名前付き引数に設定することで機能します。通常の AMD ファイルの場合、define に渡された関数の戻り値、または define 内のオブジェクトは何でもです。ただし、シムの場合は、変数 (通常はライブラリの名前空間) を選択する必要があります。これにより、名前空間ベースのライブラリの AMD をシミュレートできます

詳細については、シムのドキュメント セクションを参照してください。

于 2013-08-05T18:17:13.977 に答える
1

構文が間違っています。依存関係の配列を最初の引数にする必要があります。

試す

require(['angular'], function(angular) {
    console.log("requireJS done");
});
于 2013-08-05T09:23:28.683 に答える
0

コールバックで利用できるようにするには、いくつかのライブラリをエクスポートする必要がありました。

shim: {
    'angular': {
        exports: 'angular'
    }
}
于 2013-08-05T18:13:37.343 に答える