📜  如何在 Node.js 中使用静态方法导出类?

📅  最后修改于: 2022-05-13 01:56:56.264000             🧑  作者: Mango

如何在 Node.js 中使用静态方法导出类?

我们知道 JS 的static关键字定义了一个类的静态属性和方法。不能从类的实例调用静态方法或属性。相反,他们是从班级本身调用的。

class Car {
    static run() { console.log('Car running...') }
}

// Error: (intermediate value).run
// is not a function
( new Car() ).run()

// Car running...
Car.run()

require() 和 module.exports 之间的关系:默认情况下, module.exports指向一个对象。 module.exports的值可以是字面量量、函数、对象等。当我们导出一个模块时,意味着我们导出了module.exports的值。

require()的任务 函数是在调用它的模块中导入module.exports的值。 moduleB中的require()函数返回的值等于moduleA中的module.exports对象。因此,关系如下所示。

require() == module.exports

使用静态方法导出类:如果你想从 NodeJS 模块中导出一个使用静态方法的类,那么这个想法就像导出一个类本身一样简单。让我们看一些例子。

第 1 步:使用以下命令创建一个 NodeJS 项目。

mkdir Project && cd Project
npm init -y

第二步:在你的项目根目录下创建两个JS文件,分别命名为App.jsmyModule.js

项目结构:它看起来像这样。

第 3 步:使用以下代码编辑myModule.js

myModule.js
// myModule module
class Car{
    static run() { console.log('Car running...') }
}
  
// Export this module
module.exports = Car


App.js
// Import myModule
const mercedes = require('./myModule')
  
// Printing data
console.log(mercedes)
  
// Invoke static function
mercedes.run()


myModule.js
// myModule module
class Car{
    static run() { console.log('Car running...') }
}
  
// Export this module
// add class Car as a property 
// of module.exports
module.exports = { Car }


App.js
// Importing our module
const mercedes = require('./myModule').Car
  
// Executing run function
mercedes.run()


我们有 在 myModule.js 中使用静态方法run()创建了一个名为Car的类,并通过将类本身分配给module.exports导出

第 4 步:接下来,使用以下代码编辑您的App.js。

应用程序.js

// Import myModule
const mercedes = require('./myModule')
  
// Printing data
console.log(mercedes)
  
// Invoke static function
mercedes.run()

App.js文件中,我们使用require()函数导入myModule并将返回值分配给变量名mercedes 。所以,类Car直接分配给mercedes ,现在我们可以从App.js模块的mercedes调用静态方法run()

第 5 步:使用以下命令运行服务器。

node App.js

输出:

[Function: Car]
Car running...

如果您想以对象的形式导出模块,请添加类Car作为module.exports的属性,如下所示:

我的模块.js

// myModule module
class Car{
    static run() { console.log('Car running...') }
}
  
// Export this module
// add class Car as a property 
// of module.exports
module.exports = { Car }

应用程序.js

// Importing our module
const mercedes = require('./myModule').Car
  
// Executing run function
mercedes.run()

使用以下命令运行服务器。

node App.js

输出:

Car running...