gpt4 book ai didi

javascript - node js 和 new 在使用 require 时

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:33 26 4
gpt4 key购买 nike

我一直在尝试整理 node.js 中其他 js 文件的包含。

我已经阅读了所有关于 require 函数和其他替代方法的信息,并决定使用 require 函数(因为代码只会在 node.js 上使用,而不是在浏览器中使用)。

在我的代码中,我使用原型(prototype)来创建一个“对象”,我稍后希望创建一个实例。

为了让它工作,我一直在编写如下代码(我们称之为 vehicle.js):

var util = require('util');
var EventEmitter = require('events').EventEmitter;

module.exports = Vehicle;

util.inherits(Vehicle, EventEmitter);

function Vehicle(options) {
EventEmitter.call(this);
options = options || {};
...
}

Vehicle.prototype._doStartEvent = function(data) {
this.emit('start', data);
};

Vehicle.prototype.testRun = function() {
this._doStartEvent();
};

然后在我的主要 js(我们称之为 server.js)中,我有以下内容:

var test = exports;
exports.Vehicle = require('./vehicle.js');

var remoteVehicle = new test.Vehicle({address: "192.168.1.3"});

remoteVehicle.on('start', function(d) {console.log('started');});

remoteVehicle.testRun();

现在一切正常,但我不太了解发生了什么。

我主要关心的是 var test = exports; 的使用,然后是 exports.Vehicle = require(...)

我试着做一些像 var vehicle = require(...).Vehiclevar vehicle = require(...) 这样的事情,目的只是使用 new Vehicle 或类似的,但我无法让它工作。

我是否被迫使用导出,如果是,为什么?

请注意,我一直以 AR Drone 项目为例,上面的代码是基于他们如何在内部完成模块的。引用Client.jsindex.js .

最佳答案

require 的结果是对 exports 对象的引用,它在您的情况下是函数。只需分配一个与类(或任何其他)同名的变量,并将其用作 new

的参数
var Vehicle = require('./vehicle.js');

var remoteVehicle = new Vehicle({address: "192.168.1.3"});

remoteVehicle.on('start', function(d) {console.log('started');});

remoteVehicle.testRun();

关于javascript - node js 和 new 在使用 require 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14134004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com