Entonces sé que las importaciones se pueden reemplazar con require .
import {x} from 'x' es equivalente a const {x} = require('x') .
Pero, ¿qué pasa con import * from 'x' ? lo único que puedo imaginar que se traduzca es with(require('x')){... } .
Sin embargo, with declaraciones están mal vistas, ¿no es así? (porque no sabe en tiempo de compilación cómo se resolverá una referencia)
import * from "x";no es JS válido.
import * as x from "x";es.
¿Cómo es eso diferente de
import x from "x";?
Bueno, este último requiere que tengas una exportación predeterminada, mientras que el primero toma todas las exportaciones y las agrupa en un solo objeto.
Creo que tienes la sintaxis confundida. Este:
import * from 'x'no es válido. Lo que puedes hacer es:
import * as x from 'x'; Esto coloca todas las exportaciones del archivo x en el espacio de nombres (que es, en su mayor parte, solo un objeto de JavaScript cuyas propiedades y default corresponden a los nombres de las exportaciones). El identificador x que se importa hace referencia a este espacio de nombres.
También
import {x} from 'x'es equivalente aconst {x} = require('x').
no es correcto: require es la sintaxis de CommonJS e import / export es la sintaxis del módulo ES6. No sonintercambiables por defecto , aunque hacen cosas muy similares.