¿Cómo exportar clases con métodos estáticos en Node.js?

Sabemos que la palabra clave estática JS define propiedades y métodos estáticos para una clase. El método o las propiedades estáticas no se pueden llamar desde instancias de la clase. En cambio, están llamando desde la propia clase.

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

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

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

Relación entre require() y module.exports: por defecto, module.exports apunta a un objeto. El valor de module.exports puede ser literal, función, objeto, etc. Cuando exportamos un módulo, significa que exportamos el valor de module.exports

La tarea de la función require() es importar el valor de module.exports en el módulo desde donde fue llamado. El valor devuelto por la función require() en moduleB es igual al objeto module.exports en moduleA . Entonces, la relación se muestra a continuación.

require() == module.exports

Exportar clase con método estático: si desea exportar una clase con un método estático desde el módulo NodeJS, la idea es tan simple como exportar una clase en sí. Veamos algunos ejemplos. 

Paso 1: Cree un proyecto de NodeJS usando el siguiente comando.

mkdir Project&& cd Project
npm init -y

Paso 2: Cree dos archivos JS en el directorio raíz de su proyecto y asígneles el nombre App.js y myModule.js

Estructura del proyecto: Se verá así.

Paso 3: edite myModule.js con el siguiente código. 

myModule.js

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

Hemos creado una clase llamada Car con el método estático run() en myModule.js y la exportamos asignando la clase misma a module.exports

Paso 4: A continuación, edite su App.js con el siguiente código.

App.js

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

En el archivo App.js , importamos myModule usando la función require() y asignamos el valor de retorno al nombre de variable mercedes . Entonces, la clase Car se asigna directamente a mercedes , y ahora podemos invocar el método estático run() de mercedes desde el módulo  App.js.

Paso 5: Ejecute el servidor usando el siguiente comando.

node App.js

Producción:

[Function: Car]
Car running...

Si desea exportar un módulo en forma de objeto, agregue la clase Car como una propiedad de module.exports como se muestra a continuación:

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()

Ejecute el servidor con el siguiente comando.

node App.js

Producción:

Car running...

Publicación traducida automáticamente

Artículo escrito por braktim99 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *