Estou escrevendo um servidor simples para Node.js e estou usando minha própria classe chamada, User
que se parece com:
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));
}
};
e mais tarde no processo estou criando várias instâncias:
var server = net.createServer(function (socket) {
/* other bugs */
var user = new User(socket);
/* more bugs and bad practise */
});
Posso mover minha User
definição de classe para outro arquivo javascript e "incluí-lo" de alguma forma?
fonte
User
é a função js usual.module.exports = new User();
Isso criará uma nova instância de User sempre que o módulo for necessário. Então você pode simplesmente exigir o módulo para cada variável como este:let user = require('./user.js');
.Usando ES6, você pode ter
user.js
:E então use-o em
server.js
fonte
SyntaxError: Unexpected token export
quando faço como você descreveu ... tenho a versão do nóv10.16.3
Modifique sua definição de classe para ler assim:
Em seguida, renomeie o arquivo para
user.js
. Supondo que esteja no diretório raiz de seu script principal, você pode incluí-lo desta forma:Essa é a versão rápida e suja. Leia sobre os Módulos CommonJS se quiser saber mais.
fonte
Outra forma além das fornecidas aqui para ES6
e inclui o mesmo que
fonte
Se você anexar isso a
user.js
:então
server.js
você pode fazer:http://nodejs.org/docs/v0.4.10/api/globals.html#require
Outra maneira é:
então isso seria o suficiente em
server.js
:fonte
Só quero salientar que a maioria das respostas aqui não funciona, sou novo no NodeJS e no IDK se ao longo do tempo o método "module.exports.yourClass" mudou ou se as pessoas simplesmente inseriram a resposta errada.
fonte
Em vez de myFile.js, escreva seus arquivos como myFile.mjs. Esta extensão vem com todas as guloseimas do es6, mas quero dizer, eu recomendo a vocês webpack e Babel
fonte