Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

683
Vistas
Módulos ES6: exporte una sola clase de métodos estáticos O múltiples métodos individuales

Estoy usando módulos ECMAScript6. ¿Cuál es la forma correcta de exportar/importar múltiples métodos desde un módulo de las siguientes opciones?

Clase única de métodos estáticos:

 //------ myClass.js ------ export default class myClass { static myMethod1() { console.log('foo'); } static myMethod2(args...) { console.log('bar'); } } //------ app.js ------ import myClass from 'myClass'; myClass.myMethod1(); //foo

Múltiples métodos exportados:

 //------ myMethods.js ------ export function myMethod1() { console.log('foo'); } export function myMethod2() { console.log('bar'); } //------ app.js ------ import {myMethod1, myMethod2} from 'myMethods'; myMethod1() //foo; //OR import * as myMethods from 'myMethods'; myMethods.myMethod1() //foo;

1) Exportación: una clase de métodos estáticos se siente como un "olor a código", pero de manera similar, exportar todo individualmente se siente un poco detallado. ¿Es simplemente la preferencia del desarrollador o hay implicaciones de rendimiento aquí?

2) Importación: la sintaxis '* as' es mi método preferido, ya que le permite usar la notación de puntos (haciendo referencia tanto al módulo como al método) que ayuda a la legibilidad del código. ¿Tiene esto implicaciones de rendimiento cuando solo puedo usar 1 de los métodos?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Una clase de métodos estáticos se siente como un "olor a código"

Sí, de hecho. ¡No necesitas una estructura de class aquí! Simplemente exporte un objeto de "módulo" normal:

 //------ myMethods.js ------ export default { myMethod1() { console.log('foo'); }, myMethod2(args...) { console.log('bar'); } };

Sin embargo, recomiendo su segundo enfoque con múltiples exportaciones.

exportar todo individualmente se siente un poco detallado

Bueno, no necesitas ninguna estructura envolvente, así que diría que es menos repetitivo. Solo tiene que etiquetar explícitamente todo lo que desea exportar, lo cual no es malo.

* as sintaxis es mi método preferido, ya que le permite usar la notación de puntos (haciendo referencia tanto al módulo como al método) que ayuda a la legibilidad del código.

Esa es una preferencia muy personal y depende del tipo de código que esté escribiendo. A veces, la concisión es superior, pero la capacidad de hacer referencia explícita al módulo también puede ser útil. Tenga en cuenta que las importaciones de espacios de nombres que usan * as y los objetos importados por defecto son muy similares aquí, aunque solo las exportaciones con nombre le permiten hacer referencia a ellos directamente a través de import {myMethod1, myMethod2} . Así que mejor deje la elección a aquellos que importen su módulo.

¿Tiene esto alguna implicación en el rendimiento?

No mucho. Las implementaciones actuales de ES6 aún no apuntan a optimizaciones de rendimiento de todos modos.

En general, los identificadores estáticos son más fáciles de resolver y optimizar que los accesos de propiedad [1] , las exportaciones con varios nombres y las importaciones parciales teóricamente podrían hacer que JIT sea más rápido y, por supuesto, los archivos más pequeños necesitan menos tiempo para cargarse si las exportaciones no utilizadas se eliminan durante la agrupación. Ver aquí para más detalles. Difícilmente habrá diferencias de rendimiento notables, debe usar lo que es mejor mantenible.

[1]: los espacios de nombres del módulo ( import * as ns ) también son estáticos, incluso si ns.… parece un acceso de propiedad dinámico

over 4 years ago · Santiago Trujillo Denunciar

0

TLDR; Use múltiples métodos exportados e importación explícita.

@Bergi tiene razón acerca de no necesitar una clase con campos estáticos, solo un objeto en su primer caso. Sin embargo, esta opción es desaconsejada por Axel Rauschmayer :

Tenga en cuenta que la exportación predeterminada de objetos suele ser un antipatrón (si desea exportar las propiedades). Pierde algunos beneficios del módulo ES6 ( movimiento de árboles y acceso más rápido a las importaciones ).

Los desarrolladores de Airbnb recomiendan exportaciones nombradas e importación explícita de comodines, consulte este hilo: https://github.com/airbnb/javascript/issues/710#issuecomment-297840604

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda