/ / Come funziona l'importazione / esportazione di ES6 insieme alle esportazioni / richieste di CommonJS - javascript, module, ecmascript-6, commonjs

Come funziona ES6 import / export con le esportazioni / require di CommonJS - javascript, module, ecmascript-6, commonjs

A volte vuoi combinare queste sintassi, molto spesso quando importing qualcosa che utilizza la sintassi commonjs. Alcuni casi sono già stati discussi per esempio qui:

Come utilizzare ES6 "export default" correttamente con CommonJS "richiede"?

ma sicuramente ci sono più situazioni che possono verificarsi!

risposte:

-1 per risposta № 1

Come hanno sottolineato @Bergi e @Mike nei commentidipende dal transpiler (più comunemente Babel), come affronta l'importazione / esportazione ES6. Pochi esempi, quello che otterrai con Babel (con i suoi plugin standard):

module.exports = 1    // a.js
import one from "./a" // b.js
// one === 1

module.exports = {one: 1}  // a.js
import obj from "./a"      // b.js
// obj is {one: 1}

import * as obj from "./a" // b.js
// obj.one === 1 ; however, check out the "funky stuff" below

import {one} from "./a"    // b.js
// one === 1

Esportazione ES6, CommonJS richiede

export default 1 // a.js
const one = require("./a").default
// one === 1

export const one = 1
const one = require("./a").one
// one === 1

Roba funky

module.exports = 1          // a.js
import * as obj from "./a"  // b.js
// obj is {default: 1}

module.exports = {one: 1}   // a.js
import * as obj from "./a"  // b.js
// obj is {one: 1, default: {one: 1}}