0

私は、RequireJSを使用してモジュールをロードし、JamJSを使用してモジュールを管理するバックボーンボイラープレートを使用したプロジェクトで作業しています。私のrequireconfig.jsファイルは次のとおりです。

require.config({
  deps: ["../vendor/jam/require.config", "main"],
  paths: {
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage"
  },
  shim: {
    "backbone.localStorage": {
        deps: ['backbone']
    }
  }
});

jam/require.config.jsご覧のとおり、バックボーン、jquery、アンダースコアを指定するJam構成ファイルからRequireJSロード構成を確認できます。次はファイルの一部です:

    "packages": [
        {
            "name": "backbone.layoutmanager",
            "location": "../vendor/jam/backbone.layoutmanager",
            "main": "backbone.layoutmanager.js"
        }
        {
            "name": "backbone",
            "location": "../vendor/jam/backbone",
            "main": "backbone.js"
        }
    ],
    "version": "0.2.11",
    "shim": {
        "backbone.layoutmanager": {
            "deps": [
                "jquery",
                "backbone",
                "lodash"
            ],
            "exports": "Backbone.LayoutManager"
        }
        "backbone": {
            "deps": [
                "jquery",
                "lodash"
            ],
            "exports": "Backbone"
        }
    }
};

私が欲しいのは、私config.jsのバックボーンで指定することです。localStorareライブラリは、パッケージセクションで定義されたバックボーンに依存します。また、バックボーンパスを次のように指定すると、バックボーンライブラリが見つかりましたが、アンダースコアがロードされていないというエラーメッセージが見つかりました。

require.config({
  deps: ["../vendor/jam/require.config", "main"],
  paths: {
    "backbone": "../vendor/jam/backbone/backbone",
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage"
  },
  shim: {
    "backbone.localStorage": {
        deps: ['backbone']
    }
  }
});

jamjsを使用してbackbone.localStorageライブラリを追加できますが、使用可能なパッケージのバージョンが古いため、最後のパッケージを手動でダウンロードして手動で含めることをお勧めします。

任意のアイデアや助けをいただければ幸いです。

4

2 に答える 2

2

asgothのおかげで私は問題を解決することができます。以下にファイルを置きます。

この構成を使用すると、config.jsファイルでのjamによって管理されるパッケージに依存するshimライブラリをファイルに配置できrequire.config.jsます。

theconfig.js

// Set the require.js configuration for your application.
require.config({

  // Initialize the application with the main application file and the JamJS
  // generated configuration file.
  deps: ["../vendor/jam/require.config", "main"],

  // Packeges defined at jam/require.config.js required by shim libraries
  packages: [
    {"name" : "backbone"}, 
    {"name" : "jquery"}
  ],

  paths: {
    // Put paths here.
    "codemirror" : "../vendor/codemirror-3.0/lib/codemirror",
    "codemirror-markdown": "../vendor/codemirror-3.0/mode/markdown/markdown",
    "backbone.localStorage": "../vendor/backbone.localStorage-1.0/backbone.localStorage",
    "bootstrap" : "../vendor/bootstrap-2.2.2/js/bootstrap"
  },

  shim: {
    // Put shims here.
    "codemirror-markdown": {
      deps: ["codemirror"]
    },
    "backbone.localStorage": {
      deps: ['backbone']
    },
    "bootstrap": {
      deps: ['jquery']
    }
  }

});

therequire.config.js

var jam = {
    "packages": [
        {
            "name": "jquery",
            "location": "../vendor/jam/jquery",
            "main": "jquery.js"
        },
        {
            "name": "backbone.layoutmanager",
            "location": "../vendor/jam/backbone.layoutmanager",
            "main": "backbone.layoutmanager.js"
        },
        {
            "name": "underscore",
            "location": "../vendor/jam/underscore",
            "main": "underscore.js"
        },
        {
            "name": "backbone",
            "location": "../vendor/jam/backbone",
            "main": "backbone.js"
        },
        {
            "name": "lodash",
            "location": "../vendor/jam/lodash",
            "main": "./lodash.js"
        }
    ],
    "version": "0.2.11",
    "shim": {
        "backbone.layoutmanager": {
            "deps": [
                "jquery",
                "backbone",
                "lodash"
            ],
            "exports": "Backbone.LayoutManager"
        },
        "underscore": {
            "exports": "_"
        },
        "backbone": {
            "deps": [
                "jquery",
                "lodash"
            ],
            "exports": "Backbone"
        }
    }
};

if (typeof require !== "undefined" && require.config) {
    require.config({packages: jam.packages, shim: jam.shim});
}
else {
    var require = {packages: jam.packages, shim: jam.shim};
}

if (typeof exports !== "undefined" && typeof module !== "undefined") {
    module.exports = jam;
}
于 2013-01-03T20:31:33.763 に答える
1

バックボーンにはアンダースコアとjQueryが必要です:

shim: {
    "backbone": {
       "deps": [ "underscore", "jquery" ],
       "exports": "Backbone"  //attaches "Backbone" to the window object
    },
    "underscore": {
       "exports": "_"
    }
}

だから私はあなたがあなたを適応させるのが最善だと思いますjam/require.config.js

編集:

次に、packagesあなたの質問のセクション、それはjam/require.config.js?の一部です 場所はの場所に相対的jam/require.config.jsですか?

packages独自のconfig.jsにセクションを追加しようとしましたか?

"packages": ["backbone", "backbone.layoutmanager"]
于 2012-12-31T20:20:39.480 に答える