Ich schreibe einen einfachen Server für Node.js und verwende meine eigene Klasse mit dem Namen User
:
function User(socket) {
this.socket = socket;
this.nickname = null;
/* ... just the typical source code like functions, variables and bugs ... */
this.write = function(object) {
this.socket.write(JSON.stringify(object));
}
};
und dann später im Prozess instanziiere ich es viel:
var server = net.createServer(function (socket) {
/* other bugs */
var user = new User(socket);
/* more bugs and bad practise */
});
Kann ich meine User
Klassendefinition in eine andere Javascript-Datei verschieben und sie irgendwie "einschließen"?
quelle
User
ist übliche js Funktion.module.exports = new User();
Dies erstellt jedes Mal eine neue Instanz von User, wenn das Modul benötigt wird. Dann können Sie einfach das Modul für jede Variable wie folgt benötigen :let user = require('./user.js');
.Mit ES6 können Sie
user.js
:Und dann benutze es in
server.js
quelle
SyntaxError: Unexpected token export
wenn ich tue, was du beschrieben hast ... Ich habe eine Knotenversionv10.16.3
Ändern Sie Ihre Klassendefinition so, dass sie wie folgt lautet:
Benennen Sie dann die Datei in um
user.js
. Angenommen, es befindet sich im Stammverzeichnis Ihres Hauptskripts, können Sie es folgendermaßen einfügen:Das ist die schnelle und schmutzige Version. Lesen Sie mehr über CommonJS-Module, wenn Sie mehr erfahren möchten.
quelle
Ein anderer Weg zusätzlich zu den hier für ES6 bereitgestellten
und schließen Sie das gleiche wie ein
quelle
Wenn Sie dies anhängen an
user.js
:dann
server.js
können Sie in tun:http://nodejs.org/docs/v0.4.10/api/globals.html#require
Ein anderer Weg ist:
dann würde dies ausreichen in
server.js
:quelle
Ich möchte nur darauf hinweisen, dass die meisten Antworten hier nicht funktionieren. Ich bin neu bei NodeJS und IDK, wenn sich die Methode "module.exports.yourClass" im Laufe der Zeit geändert hat oder wenn Leute einfach die falsche Antwort eingegeben haben.
quelle
Anstelle von myFile.js schreiben Sie Ihre Dateien wie myFile.mjs. Diese Erweiterung enthält alle Extras von es6, aber ich meine, ich empfehle Ihnen Webpack und Babel
quelle