如何在 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.js和myModule.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...