Я пишу простой сервер для Node.js и использую свой собственный класс, 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));
}
};
а затем позже в процессе я часто создаю его экземпляры:
var server = net.createServer(function (socket) {
/* other bugs */
var user = new User(socket);
/* more bugs and bad practise */
});
Могу ли я переместить User
определение моего класса в другой файл javascript и каким-то образом "включить" его?
источник
User
это обычная функция js.module.exports = new User();
Это будет создавать новый экземпляр User каждый раз, когда потребуется модуль. Тогда вы можете просто потребовать модуль для каждой переменной , как это:let user = require('./user.js');
.Используя ES6, вы можете
user.js
:А затем использовать его в
server.js
источник
SyntaxError: Unexpected token export
когда делаю, как вы описали ... у меня есть версия узлаv10.16.3
Измените определение вашего класса, чтобы оно выглядело так:
Затем переименуйте файл в
user.js
. Предполагая, что он находится в корневом каталоге вашего основного скрипта, вы можете включить его следующим образом:Это быстрая и грязная версия. Прочтите о модулях CommonJS, если хотите узнать больше.
источник
Другой способ в дополнение к представленным здесь для ES6
и включить то же, что и
источник
Если вы добавите это в
user.js
:тогда
server.js
вы можете:http://nodejs.org/docs/v0.4.10/api/globals.html#require
Другой способ:
тогда этого будет достаточно
server.js
:источник
Я просто хочу указать, что большинство ответов здесь не работают, я новичок в NodeJS и IDK, если с течением времени метод "module.exports.yourClass" менялся или люди просто вводили неправильный ответ.
источник
Вместо myFile.js напишите свои файлы вроде myFile.mjs. Это расширение поставляется со всеми преимуществами es6, но я имею в виду, что рекомендую вам webpack и Babel
источник