![](/img/trans.png)
[英]How to load bootstrapped models in Backbone.js while using AMD (require.js)
[英]How to use a Backbone Model with Node.js and AMD (require.js on the browser)
我目前有一个使用require.js的AMD Backbone模型,如下所示:
// models/game.js
define(['backbone'],
function(Backbone) {
var Game = Backbone.Model.extend({
urlRoot : '/games/'
, defaults : {
name : null
}
});
return Game;
});
AMD / Backbone组织来自本教程和jrburke的Backbone请求 。
我也想在Node.js中使用Backbone模型,因为在不使用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笔记时 ,我恐怕还不清楚。 如何在浏览器和Node.js模块中使用相同的Backbone Model文件作为AMD文件?
奖励: 是否有比每个文件顶部~10行清晰的方式? 理想情况下没有定义垫片 。
您是否尝试在节点上以AMD方式进行操作?
http://requirejs.org/docs/node.html - 如果你想在客户端和后端都拥有相同的AMD模块,可能是最好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.