1

(requireJS、angularJS、angularAMD を使用)

私のmain.jsファイルにあるとき:

require.config({
    baseUrl: "js",
    paths: {
        'angular': 'libs/angularjs/angular.min',
        'angularAMD': 'libs/angularjs/angularAMD.min'
    },
    shim: {
        'angularAMD': ['angular']
    }
});

define(['angularAMD'], function (angularAMD) {
    var app = angular.module("app", []);
    app.controller("testCtrl", function ($scope) {
        $scope.message = "udało się!";
    });
    angularAMD.bootstrap(app);
    return app;
});

すべて正常に動作します。しかし、構成部分を他のファイルに切り取ると、エラーが発生しました:

main.js:

require(['common'], function (common) {
    define(['angularAMD'], function (angularAMD) {
        var app = angular.module("app", []);
        app.controller("testCtrl", function ($scope) {
            $scope.message = "udało się!";
        });
        angularAMD.bootstrap(app);
        return app;
    });
});

common.js

require.config({
    baseUrl: "js",
    paths: {
        'angular': 'libs/angularjs/angular.min',
        'angularAMD': 'libs/angularjs/angularAMD.min'
    },
    shim: {
        'angularAMD': ['angular']
    }
});

require 関数で define を使用できますか? そうでない場合は、最初に共通の構成を含めてから定義を使用する方法はありますか?

4

1 に答える 1

2

main.jsファイルは、RequireJS をロードdata-mainするタグの属性に指定したものであるか、アプリケーションのメイン エントリ ポイントであると想定しています。<script>これに変更main.jsします。

require(['common'], function (common) {
    require(['app']);
});

そしてapp.js、コードが簡単にロードできる場所にモジュールを作成します。

define(['angularAMD'], function (angularAMD) {
    var app = angular.module("app", []);
    app.controller("testCtrl", function ($scope) {
        $scope.message = "udało się!";
    });
    angularAMD.bootstrap(app);
    return app;
});

appこのモジュールで作成した値にアクセスする必要があるものはすべて、appモジュールを必要とするだけです。

質問にあるコードはモジュールを定義しますが、非同期で行います。への呼び出しがdefine発生するまでに、RequireJS は既に読み込みを完了していmainます。それに関する限り、main完了です。では、定義されたモジュールにどのような名前を付ける必要がありますか?

于 2014-04-22T12:12:31.960 に答える