javascript - 在 Node.js 中包含来自另一个文件的 JavaScript 类定义

标签 javascript node.js

我正在为 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

class User {
  //...
}

module.exports = User // 👈 Export class

server.js

const User = require('./user.js')

let user = new User()

这叫做 CommonJS模块。

ES 模块

从 Node.js 版本 14 开始,可以将 ES 模块与 CommonJS 一起使用。在 ESM documentation 中了解更多信息.

user.mjs(👈扩展很重要)

export default class User {}

server.mjs

import User from './user.mjs'

let user = new User()

关于javascript - 在 Node.js 中包含来自另一个文件的 JavaScript 类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998355/

相关文章:

javascript - Angular ui bootstrap typeahead荧光笔设计

node.js - 如何使用开发标志启动 Node 应用程序?

javascript - 在现代 javascript 中求和输入类型数字的两个值

javascript - HighCharts 和 Javascript 将数据作为数组传递

javascript - 从值位置流 javascript 泛型类型 "Cannot reference type ` CustomType`[1]。”

javascript - 使用 Sails.js 根据参数创建必需的属性

database - Sequelize验证抛出错误

javascript - Fabric JS _updateObjectsCoords 替代方案? (迁移问题到 1.7.9)

ios - 如何从 iOS NSURLSession 访问 Node JS TLS 服务器

javascript - 当伪 javascript 类已经初始化时,我在尝试修改 "this"对象时遇到了很多麻烦