【问题标题】:Placing Backbone Models in external files using node.js使用 node.js 将主干模型放置在外部文件中
【发布时间】:2013-03-06 17:16:39
【问题描述】:

我正在尝试通过 node.js 和骨干网找到自己的方式。我的意图是至少与服务器和浏览器共享所有模型状态。现在我不太确定我是否真的需要分享观点。我还想通过 express 和 nodejs 处理所有路由,而不是骨干网。为了让我的代码更加结构化,我期待将每个模型保存在单独的 *.js 文件中。通过这样做,我遇到了以下错误消息:

TypeError: Object #<Object> has no method 'extend'

我认为这可能是单独文件中缺少下划线的问题,所以这是我的基本模型:

models/BaseModel.js

var Backbone = require('../node_modules/backbone'),
_ = require('../node_modules/underscore'),

var BaseModel = Backbone.Model.extend({

  modelName: 'basemodel'

});

exports.BaseModel = BaseModel;

app.js var BaseModel = require('./models/BaseModel');

var MyModel = BaseModel.extend({
// ... attributes, functions etc.

});

有没有人暗示我在那里做错了什么?

【问题讨论】:

  • 阅读这个问题stackoverflow.com/questions/6549149/…也许有帮助?
  • 嗨 MrPovod,感谢您的回复。不完全的。到目前为止,我什至还没有使用属性。如果我将 BaseModel 放在 app.js 中,它可以正常工作。即使我从 BaseModel.js 输出 BaseModel 和从 app.js 输出 BaseModel,它们看起来都是相等的。另外它也包含扩展函数,但是 node.js 抱怨它。

标签: node.js backbone.js


【解决方案1】:

然后在 app.js 中试试这段代码:

BaseModel = require('./models/BaseModel').BaseModel;

或者在models/BaseModel.js 不是exports.BaseModel = BaseModel; 使用它-module.exports = BaseModel

【讨论】:

    【解决方案2】:

    我真的想通了。缺陷在于引用 BaseModel,所以

    这个

    var MyModel = BaseModel.extend({
      //
    });
    

    不得不变成:

    var MyModel = BaseModel.BaseModel.extend({
       //
    };
    

    因为 出口.BaseModel = BaseModel; 在 BaseModel.js 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多