1

addyOsmaniのrequire.js+BackboneのToDoMVCの例:https ://github.com/addyosmani/todomvc/blob/gh-pages/dependency-examples/backbone_require/js/main.js 、彼は使用しています

Backbone.history.start() // line #31

実際にバックボーンを必要とせずに。これはどのように/なぜ機能しますか?シムはこれを可能にしていますか?それとも私は明らかな何かを見逃していますか?

4

2 に答える 2

3

コードを見ると、view/app.jsは実際にはBackboneを必要としています。

そして、バックボーンシムはグローバルバックボーン変数をエクスポートしています。

他のモジュールが実際にシムを必要としない場合、シムはロードされないため、アクセスできません。

main.jsの「views/app」要件を削除して、自分の目で確かめることができます。

于 2012-08-28T00:20:25.763 に答える
0

@ChristiMihaiが述べたように、BackboneはグローバルBackboneオブジェクトを作成しました。Require.js / Backbone/Handlebarsアプリで私が行っていることの例を挙げましょう。

まず、Requireconfigを以下に含めます<head>

var require_config = {
  baseUrl: "/javascripts",
  waitSeconds: 5,
  paths: {
    'cdnjs': 'http://ajax.cdnjs.com/ajax/libs',
    'aspnetcdn': 'http://ajax.aspnetcdn.com/ajax',
    'cloudflare': 'http://cdnjs.cloudflare.com/ajax/libs',
    'local': '/javascripts'
  }
}

if (typeof require !== 'undefined') {
  require.config(require_config);
} else {
  var require = require_config;
}

その後、requireモジュールをブートストラップします。例:

define([
  'app'
],
function() {
  console.log('Homepage module');
  /*

  ... this is the meat of your app...
  you can add other dependencies beside `app` too

  */
});

これappが、baseUrlを介して解決さ/javascripts/app.jsれ、必要なすべてのdepsを順番に含む主な依存関係であり、次のようになります。

define([
  'order!cdnjs/json2/20110223/json2',
  'order!cloudflare/underscore.js/1.3.1/underscore-min',
  'order!cloudflare/backbone.js/0.9.2/backbone-min',
  'order!handlebars/handlebars-1.0.0.beta.6.min',
  'order!lib/ns',
  'bootstrap'
], function(){});
于 2012-08-28T01:30:29.383 に答える