使用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');