我有一些名为socket.js和Chat.js的文件。
让我们说Chat.js包含:
Nz_èJÓ_µù[î¬y
和socket.js
function Chat(io, socket) {
this.sendChatMessage(data) {};
}
module.exports = Chat;
经过多次尝试,以上是最简洁的要求" Chat"我发现了,但对于经常使用的东西看起来仍然很奇怪。
我尝试了类似的东西(我想仍然干净)
module.exports = function (io) {
io.on('connection', function(socket) {
var Chat = new (require('./Chat'))(io, socket),
});
}
还尝试添加" new"在module.exports = new Chat;直接等等。
这有什么标准吗?如果没有,你用什么?
答案 0 :(得分:3)
是的,你就是这样做的:导出你需要的任何功能,并在需要模块后调用它们。
还尝试在module.exports = new Chat
中添加“new”
除非您确实要导出实例而不是构造函数,否则不要这样做。
使用这样的模式很常见,所以你可以省略调用构造函数的new
:
function Chat(io, socket) {
if (! (this instanceof Chat)) return new Chat(io, socket);
this.sendChatMessage(data) {};
}
var Chat = require('./Chat')(io, socket)
答案 1 :(得分:0)
我不确定现在最受欢迎的是什么,但这是我如何用babel和ES6标准做到的:
// chat.js
export default class Chat {
constructor(io, socket) {
this.io = io;
this.socket = socket;
this.sendMessage(data);
}
sendMessage(data) {
//
}
}
// iochat.js
import Chat from './chat';
export default function connectChat (io) {
io.on('connection', (socket) => {
let chat = new Chat(io, socket);
});
}
// tio.js
import connectChat from './iochat';
let io = { on:()=>{}};
connectChat(io);
虽然我猜测connectChat是一个更大的模块或应用程序的一部分。