3

そのため、同様の質問が飛び交っていますが、これについて最新の回答を得たいと考えています。

バージョン-

そよ風: 1.4.0 ノックアウト: 2.2.1 RequireJS: 2.1.5

ノックアウトJSを使用してrequireJSプロジェクトにそよ風をロードしようとしています。私たちのrequireJS構成は非常にシンプルです-

  require.config({
    waitSeconds: 15,
    paths: {

        'templates': "/ist-common/templates",
        'lib': '/ist-common/js/lib',
        'ist': '/ist-common/js/ist'
    }

});

そこで、そよ風のライブラリを次のディレクトリ構造にロードしました-

lib
---->q.js
---->breeze.debug.js

私はそよ風を使用するように「データサービス」モジュールを定義しようとしています-

define(['lib/knockout', 'lib/q', 'lib/breeze.debug'], function (ko, Q, breeze) {


    var serviceName = '/ist/rest'; // route to the endpoint

    var manager = new breeze.EntityManager(serviceName);
    manager.enableSaveQueuing(true);


    var query = new EntityQuery("missions");
    manager.executeQuery(query, function(data) {

        console.log("success");

    });


});

この構成は可能ですか?スクリプトタグを最小限に抑え、requireJS のみをロードしてから、モジュール定義内で必要に応じてノックアウト、jquery などをロードしようとしています。

この構成は現在、メッセージで失敗します-

エラー: Q を初期化できません。https://github.com/kriskowal/qを参照してください。

編集*

以下のrequireの設定でQをロードすることができましたが、これは間違っているように感じます。window.Q を設定する必要があるのはなぜですか? 名前付きモジュールとして Q にアクセスできないのでしょうか?

 var require = {
    waitSeconds: 15,
    deps: ["/ist-common/js/lib/q.js"],
    callback: function(Q){
        window.Q = Q;
    },
    paths: {

        'templates': "/ist-common/templates",
        'lib': '/ist-common/js/lib',
        'ist': '/ist-common/js/ist'
    }

};
4

1 に答える 1

1

また、そよ風のシムも必要です(Angularをそよ風とrequireで使用するから)

breeze: {
    deps: ['ko', 'jquery', 'Q']
},

これが必要になるのは、breeze は自身を定義しますが、依存関係を定義せず、そこに存在することを期待しているだけだからです (RequireJs は依存関係を文字列ではなく変数で解釈できませんか?)。

風は「jQuery」を要求しますが、jQuery コードはそれ自体を「jquery」として定義するため、シムも必要です。

于 2013-09-07T11:50:48.470 に答える