使用brunch和node.js模块

我想为我的客户早午餐版本和我的节点服务器使用相同的骨干模型,节点的模块系统与默认使用的commonjs模块几乎相同,但是我需要一些思考来设置不同的东西。

/server.js

Backbone = require('Backbone'); _ = require('underscore'); var MyAppModel = require('./app/models/MyAppModel'); var app = new MyAppModel(); 

/app/models/MyAppModel.js

 var PeopleCollection = require('../collections/PeopleCollection'); // NODE var PeopleCollection = require('collections/PeopleCollection'); // BRUNCH var MyAppModel = Backbone.Model.extend({ initialize: function() { this.set('people', new PeopleCollection()); } }); module.exports = MyAppModel; 

/app/collections/PeopleCollection.js

 var PersonModel = require('../models/PersonModel'); // NODE var PersonModel = require('models/PersonModel'); // BRUNCH var PeopleCollection = Backbone.Collection.extend({ model: PersonModel }); module.exports = PeopleCollection; 

/app/models/PersonModel.js

 var PersonModel = Backbone.Model.extend({}); module.exports = PersonModel; 

基本上唯一阻止我在服务器和客户端上使用相同的文件是需要path。 我可以设置一个全球服务器,然后:

 if (server) var PeopleCollection = require('../collections/PeopleCollection'); else var PeopleCollection = require('collections/PeopleCollection'); 

应该工作我猜,有没有更优雅的解决scheme呢?

没有必要使用绝对path。 早午餐支持相对path。 你可以使用:

 var PeopleCollection = require('../collections/PeopleCollection');