我正在为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文件中并以某种方式“包含”它吗?
6条答案
按热度按时间yyyllmsg1#
您可以简单地这样做:
user.js
server.js
这被称为CommonJS模块。
ES模块
从Node.js版本14开始,可以将ES模块与CommonJS一起使用。在ESM documentation中阅读更多信息。
user.mjs(👈扩展名很重要)
server.mjs
1sbrub3j2#
使用ES6,你可以有
user.js
:然后在
server.js
中使用它ar7v8xwq3#
修改你的类定义如下:
然后将文件重命名为
user.js
。假设它位于主脚本的根目录中,您可以像这样包含它:这是快速和肮脏的版本。如果您想了解更多信息,请阅读CommonJS Modules。
hmtdttj44#
除了这里为ES6提供的方法之外,还有另一种方法
并包括相同的
yqhsw0fo5#
如果你把这个附加到
user.js
:在
server.js
中,你可以:http://nodejs.org/docs/v0.4.10/api/globals.html#require
另一种方法是:
那么这在
server.js
中就足够了:swvgeqrz6#
要在Paul Rumkin答案(第一个答案)的基础上构建,您可以使用带有
.js
扩展的ES Modules类,并且不必使用.mjs
扩展。要做到这一点,请确保您有
package.json
文件。如果没有,请运行以下命令来创建它:在
package.json
文件的末尾添加"type": "module"
:创建user.js文件,导出类:
导入server.js中的类: