Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

233
Views
Pasar opciones a las importaciones de módulos ES6

¿Es posible pasar opciones a las importaciones de ES6?

Cómo traduces esto:

 var x = require('module')(someoptions);

a ES6?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

No hay forma de hacer esto con una sola declaración de import , no permite invocaciones.

Por lo tanto, no lo llamaría directamente, pero básicamente puede hacer lo mismo que hace commonjs con las exportaciones predeterminadas:

 // module.js export default function(options) { return { // actual module } } // main.js import m from 'module'; var x = m(someoptions);

Alternativamente, si usa un cargador de módulos que admita promesas monádicas , es posible que pueda hacer algo como

 System.import('module').ap(someoptions).then(function(x) { … });

Con el nuevo operador de import podría convertirse

 const promise = import('module').then(m => m(someoptions));

o

 const x = (await import('module'))(someoptions)

sin embargo, probablemente no desee una importación dinámica sino estática.

over 4 years ago · Santiago Trujillo Report

0

Concepto

Aquí está mi solución usando ES6

Muy en línea con la respuesta de @Bergi, esta es la "plantilla" que uso al crear importaciones que necesitan que se pasen parámetros para las declaraciones de class . Esto se usa en un marco isomorfo que estoy escribiendo, por lo que funcionará con un transpilador en el navegador y en node.js (uso Babel con Webpack ):

./MiClase.js

 export default (Param1, Param2) => class MyClass { constructor(){ console.log( Param1 ); } }

./main.js

 import MyClassFactory from './MyClass.js'; let MyClass = MyClassFactory('foo', 'bar'); let myInstance = new MyClass();

Lo anterior generará foo en una consola.

EDITAR

Ejemplo del mundo real

Para un ejemplo del mundo real, estoy usando esto para pasar un espacio de nombres para acceder a otras clases e instancias dentro de un marco. Debido a que simplemente estamos creando una función y pasando el objeto como un argumento, podemos usarlo con nuestra declaración de clase así:

 export default (UIFramework) => class MyView extends UIFramework.Type.View { getModels() { // ... UIFramework.Models.getModelsForView( this._models ); // ... } }

La importación es un poco más complicada y automagical en mi caso dado que es un marco completo, pero esencialmente esto es lo que está sucediendo:

 // ... getView( viewName ){ //... const ViewFactory = require(viewFileLoc); const View = ViewFactory(this); return new View(); } // ...

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Report

0

Basándose en la respuesta de @Bergi para usar el módulo de depuración usando es6 sería lo siguiente

 // original var debug = require('debug')('http'); // ES6 import * as Debug from 'debug'; const debug = Debug('http'); // Use in your code as normal debug('Hello World!');
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!