Avec la syntaxe ES2015, nous avons la nouvelle syntaxe d'importation, et j'essaie de comprendre comment importer tout ce qui est exporté d'un fichier dans un autre, sans le placer dans un objet, par exemple. disponibles comme s'ils étaient définis dans le même fichier.
Donc, essentiellement, ceci:
// constants.js
const MYAPP_BAR = 'bar'
const MYAPP_FOO = 'foo'
// reducers.js
import * from './constants'
console.log(MYAPP_FOO)
Cela ne fonctionne pas, du moins selon ma configuration Babel/Webpack, cette syntaxe n'est pas valide.
Cela fonctionne (mais est long et ennuyant si vous avez besoin de plus que quelques choses importées):
// reducers.js
import { MYAPP_BAR, MYAPP_FOO } from './constants'
console.log(MYAPP_FOO)
Comme cela (mais cela enveloppe les consts dans un objet):
// reducers.js
import * as consts from './constants'
console.log(consts.MYAPP_FOO)
Existe-t-il une syntaxe pour la première variante ou devez-vous importer chaque élément par son nom ou utiliser l'objet wrapper?
Y a-t-il une syntaxe pour la première variante,
Non.
ou devez-vous importer chaque chose par son nom ou utiliser l'objet wrapper?
Oui.
Vous ne pouvez pas importer toutes les variables par un caractère générique pour la première variante car cela provoque des variables conflictuelles si vous l'avez avec le même nom dans des fichiers différents.
//a.js
export const MY_VAR = 1;
//b.js
export const MY_VAR = 2;
//index.js
import * from './a.js';
import * from './b.js';
console.log(MY_VAR); // which value should be there?
Parce qu'ici nous ne pouvons pas résoudre la valeur réelle de MY_VAR
, ce type d'importation n'est pas possible.
Pour votre cas, si vous avez beaucoup de valeurs à importer, il sera préférable de les exporter toutes en tant qu'objet:
// reducers.js
import * as constants from './constants'
console.log(constants.MYAPP_FOO)
Bien sûr il y a.
Il suffit d'utiliser codegen.macro
codegen
'const { ' + Object.keys(require('./path/to/file')).join(',') + '} = require("./path/to/file");
Mais il semble que vous ne pouvez pas importer de variable générée par codegen . https://github.com/kentcdodds/babel-plugin-codegen/issues/10