Я пытался разобраться с включением других файлов js в node.js.
Я прочитал все о функции require и других альтернативах и решил использовать функцию require (поскольку код будет использоваться только на node.js, а не в браузере).
В моем коде я использую прототипы для создания «объекта», из которого я позже хочу создать экземпляр.
Чтобы заставить его работать, я пишу код, подобный следующему (давайте назовем его 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(...).Vehicle
и var vehicle = require(...)
с целью просто использовать new Vehicle
или что-то подобное, но не смог заставить это работать.
Вынужден ли я использовать экспорт, и если да, то почему?
Обратите внимание, что я использовал проект AR Drone в качестве примера, приведенный выше код основан на том, как они сделали свои модули внутри. См. Client.js и index.js.