如何使用带有Node.js和AMD的Backbone Model(浏览器上的require.js)

我目前有一个工作的AMD骨干模型使用require.js像这样:

// models/game.js define(['backbone'], function(Backbone) { var Game = Backbone.Model.extend({ urlRoot : '/games/' , defaults : { name : null } }); return Game; }); 

AMD / Backbone组织来自本教程和jrburke的“骨干请求” 。

我也想在Node.js中使用Backbone Model,因为在不使用AMD的情况下,共享Backbone模型和集合在过去运行良好,显然我是一个受虐狂。

所以我尝试了以下(由Backbone mod启发):

 // models/game.js (function(root, factory) { if (typeof exports !== 'undefined') { factory(root, exports, require('backbone')); } else if (typeof define === 'function' && define.amd) { define(['backbone'], function(Backbone, exports) { factory(root, exports, Backbone); }); } }(this, function(root, Game, Backbone) { Game = Backbone.Model.extend({ urlRoot : '/games/' , defaults : { name : null } }); return Game; })); 

但是,当我将其包含在浏览器中时, Game现在是不确定的:

 // collections/games.js define(['backbone', 'models/game'], function(Backbone, Game) { var Games = Backbone.Collection.extend({ model: Game , initialize: function() { console.log(Game) // Game is undefined var game = new Game({ name: 'game1' }); } }); return Games; }); 

当我看着CommonJS笔记时 ,恐怕我还不清楚。 我如何在浏览器中使用与AMD文件相同的Backbone Model文件,以及如何使用Node.js模块?

而对于奖金: 有没有比每个文件顶部〜10行更清洁的方式? 理想情况下没有定义垫片 。

你有没有尝试在节点上使用AMD方式呢?

http://requirejs.org/docs/node.html – 可能是最好的解决scheme,如果你想在客户端和后端有相同的AMD模块。