web-dev-qa-db-fra.com

Importation javascript de '/ folder' avec index.js

J'ai remarqué quelques cas où j'ai vu quelque chose comme ce qui suit:

// /reducers/reducer1.js
export default function reducer1(state = {}, action){
  // etc...
}
  
// /reducers/reducer2.js
export default function reducer2(state = {}, action){
  // etc...
}

// /reducers/index.js
import { combineReducers } from 'redux';
import reducer1 from './reducer1';
import reducer2 from './reducer2';

export default combineReducers({
  reducer1,
  reducer2
})
  
// /store.js
import masterReducer from './reducers';

export default function makeStore(){
  // etc...
}

Notez le dernier "fichier" où nous appelons import masterReducer from './reducers' - Quelques personnes semblent croire que cela devrait importer le default export du fichier index.js.

Cela fait-il réellement partie de la spécification? - mon interprétation/question est que ceci est le résultat de beaucoup de gens utilisant WebPack v1 qui traduisent les instructions import en déclarations CommonJS de style requires? Ou bien cette rupture dans WebPack v2 avec le support "officiel" import/export?

44
Jordan

Cela fait-il réellement partie de la spécification?

N ° Comment identificateurs de module ('./reducers' _ dans votre cas) sont résolus aux modules réels est laissé à la mise en œuvre du module chargeur/bundler, ce n'est pas spécifié par ES6. Et cela ne semble pas être spécifié dans CommonJs non plus.

C’est comme ça que le noeud le fait - quand vous avez besoin d’un répertoire, c’est index.js fichier sera utilisé. Des groupes comme browserify ou webpack ont suivi cette convention (pour des raisons de compatibilité).

58
Bergi