gpt4 book ai didi

javascript - 如何在 Node.js 和 AMD 中使用 Backbone 模型(浏览器上的 require.js)

转载 作者:IT老高 更新时间:2023-10-28 23:27:02 25 4
gpt4 key购买 nike

我目前有一个工作 AMD使用 require.js 的主干模型如下:

// models/game.js
define(['backbone'],
function(Backbone) {

var Game = Backbone.Model.extend({
urlRoot : '/games/'
, defaults : {
name : null
}
});

return Game;
});

AMD/Backbone 组织来自 this tutorialjrburke's Pull Request for 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 notes 时,恐怕我还不清楚。 如何在浏览器中使用与 AMD 文件和 Node.js 模块相同的主干模型文件?

另外:有没有比每个文件顶部的约 10 行更简洁的方法?最好没有 define shim .

最佳答案

您是否也尝试过在 Node 上以 AMD 方式进行操作?

http://requirejs.org/docs/node.html - 如果您想在客户端和后端拥有相同的 AMD 模块,这可能是最佳解决方案。

关于javascript - 如何在 Node.js 和 AMD 中使用 Backbone 模型(浏览器上的 require.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com