繁体   English   中英

如何在节点 js 中正确导入/导出方法

[英]How to properly import/export a method in node js

我目前正在尝试从 class 导入一个方法,以保持一切整洁,因为我计划导入的方法会很长。 但是,每次打开它时,我似乎都会收到一个新错误。 最大的问题是似乎不想与我一起使用的导入/导出和“事件”参数。

编辑:如果我简单地结合两个类并将方法放在 ImportingClass.js 中,代码就可以工作,但是代码太多了。

验证输入.js:

class ValidateInput
{
    validateInput(event)
    {
        var ID = event.target.StudentID.value;
        // ...
    }
}

导入类.js:

import {validateInput} from '../ValidateInput';

class ImportingClass
{

    handleSubmit(event)
    {
        validateInput(this.event);
        // ...
    }
}

错误:未捕获的类型错误:(.validateInput)不是 function

但我们也可以这样做

创建独立的 function validateInput

export function validateInput(e){
 .... code
}

为了在你的第一个 class 中调用这个 function 是ValidateInput.js我们可以做这样的事情

class ValidateInput{
  validateInput(){
    validateInput.apply(this, ...args)
}}

在您的第二个文件ImportingClass.js中,您可以导入并使用import {validateInput} from './validateInput'

或者您可以通过类似这样的原型导出它

export const validateInput = ValidateInput.prototype.validateInput
  1. 您需要导出 class 以便可以在不同的模块中从外部调用它。 方法是将 class 添加到导出 object 中。

验证输入.js:

class ValidateInput
{
    validateInput(event)
    {
        var ID = event.target.StudentID.value;
        // ...
    }
}

exports.ValidateInput = ValidateInput;
  1. 将您的ValidateInput class 导入您想要使用的模块中。

导入类.js:

// import {validateInput} from '../ValidateInput';
const fileName = require(../ValidateInput.js);

class ImportingClass
{

    handleSubmit(event)
    {
        fileName.ValidateInput.validateInput(this.event);
        // ...
    }
}

我使用了命名空间fileName来避免混淆。 它指的是文件。 访问的第一个属性是您的 class 名称,然后是您要调用的方法。 如果您对文件使用几乎相同的名称 class 和方法名称,这可能会有点混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM