Próbuję posortować uwzględnienie innych plików js w węźle.js.Węzły js i nowe podczas używania wymagają
Przeczytałem wszystko o funkcji wymagającej i innych alternatywach i zdecydowałem się użyć funkcji wymagającej (ponieważ kod będzie używany tylko w węźle node.js, a nie w przeglądarce).
W moim kodzie używam prototypów do tworzenia "obiektu", który później chciałbym stworzyć z offu.
Aby zmusić go do pracy byłem pisania kodu jak poniżej (nazwijmy go 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();
};
Następnie w moich głównych js (pozwala wywołać server.js), mam co następuje:
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();
Teraz wszystko działa dobrze, ale nie mam dobrego zrozumienia tego, co się dzieje.
Moim głównym zmartwieniem jest użycie var test = exports;
, a następnie exports.Vehicle = require(...)
.
Próbowałem po prostu zrobić coś takiego, jak var vehicle = require(...).Vehicle
i var vehicle = require(...)
, z celem tylko użycie new Vehicle
lub podobnym, ale nie mogłem go uruchomić.
Czy jestem zmuszony korzystać z eksportu, a jeśli tak, dlaczego?
Uwaga! Jako przykład wykorzystałem projekt AR Drone, powyższy kod jest oparty na sposobie, w jaki wykonał on swoje moduły wewnętrznie. Patrz: Client.js i .
Ten Mastering Node eBook jest dobra: http://visionmedia.github.com/masteringnode/book. html – Alex
@LeonidBeschastny Jak to jest duplikatem? To pytanie zostało zadane w pierwszej kolejności (zostało to zadane 3 stycznia 2013 r., A ten, o którym twierdzisz, że jest duplikatem, został zadany 11 lipca 2013 r.). Jeśli uważasz, że są duplikaty, to drugie pytanie jest duplikatem, a nie tym. – Metalskin
@Metalskin przepraszam, byłem zdezorientowany tytułem. Ponownie przekierowuję twoje pytanie bardziej uważnie i myślę, że myliłem się, że to duplikat. –