当使用require时,节点js和new

我一直在尝试在node.js中包含其他js文件。

我已经阅读了有关require函数和其他select的所有内容,并决定使用require函数(因为代码只能在node.js上使用,而不是在浏览器中使用)。

在我的代码中,我正在使用原型创build一个“对象”,我稍后希望创build一个实例。

为了得到它的工作,我一直在写代码如下(让我们称之为vehicle.js):

var util = require('util'); var EventEmitter = require('events').EventEmitter; module.exports = Vehicle; util.inherits(Vehicle, EventEmitter); function Vehicle(options) { EventEmitter.call(this); options = options || {}; ... } Vehicle.prototype._doStartEvent = function(data) { this.emit('start', data); }; Vehicle.prototype.testRun = function() { this._doStartEvent(); }; 

然后在我的主要JS(让我们称之为server.js),我有以下几点:

 var test = exports; exports.Vehicle = require('./vehicle.js'); var remoteVehicle = new test.Vehicle({address: "192.168.1.3"}); remoteVehicle.on('start', function(d) {console.log('started');}); remoteVehicle.testRun(); 

现在这一切都很好,但是我对于发生的事情并没有很好的理解。

我主要关心的是使用var test = exports; 然后exports.Vehicle = require(...)

我试图做一些像var vehicle = require(...).Vehiclevar vehicle = require(...) ,目的是使用new Vehicle或类似的东西,但是我不能使它工作。

我被迫使用出口,如果是的话,为什么?

请注意我以AR Drone项目为例,上面的代码是基于他们如何在内部完成他们的模块。 参考Client.js和index.js 。

require结果是在你的情况下作为函数的输出对象的引用。 只需指定一个与类(或任何其他)具有相同名称的variables,并将其用作new的参数

 var Vehicle = require('./vehicle.js'); var remoteVehicle = new Vehicle({address: "192.168.1.3"}); remoteVehicle.on('start', function(d) {console.log('started');}); remoteVehicle.testRun();