1

そのため、TODO アプリケーションでは Backbone と require.js を使用しました。すべてがクールです。すべてのモデル、ビュー、コレクションを単一のファイルに分離し、require.js を使用してそれらをロードしました。コンソールのrequire.jsオプティマイザーr.jsを使用して、すべてのファイルを1つに結合しようとした後。その結果、すべてのライブラリとクラスを含む 1 つのファイルを取得します。しかし、実行しようとすると、バックボーンが未定義であるというエラーが発生しました。私はファイルをチェックし、r.js が次のものを生成したことを確認します: 1. 最初に app-built.js ファイルにバックボーン ソースを追加し、次の文字列を配置した

define("lib/backbone", function(){});

その結果、ウィンドウにバックボーン変数がありますが、モジュールではrequire.jsの方法で使用します define('models/todo',['jquery','underscore','lib/backbone'],function ($, _, Backbone) {

いいえ、グローバルではなく、モジュールの結果として、バックボーンのローカル変数が未定義です。また、underscore.js にも同じ問題があります。R.js も同様にインポートしました。

それで質問。今後他のライブラリでこの問題を回避する方法、または今これを修正する方法は? いくつかのテクニック?

4

1 に答える 1

1

RequireJS によるバックボーンは、バックボーンがベース URL ディレクトリにあると想定しているため、shim を使用する必要がある場合があります。あなたの場合、代わりに /lib にあるようです。シムを設定します。使用している RequireJS のバージョンによっては、使用しているライブラリが AMD と互換性があることも確認する必要があります。

あなたのrequireJS構成で:

shim: {
  backbone: {
    deps: ["underscore", "jquery"],
    attach: "Backbone"
  },
  underscore: {
    attach: "_"
  }
}
于 2013-03-31T17:50:36.400 に答える