2017-03-18 105 views
0

我正在学习JS,我有类似的东西。从文件夹ES6导入

//all inside folder reducers 

//reducer1.js 
export default reducer1 

//reducer2.js 
export default reducer2 

//index.js 
import reducer1 from './reducer1' 
import reducer2 from './reducer2' 
//then combine reducer 
export default index 

//outside folder reducers 
import reducer from './reducers' 

因为./reducers只是一个文件夹,并且有3个文件,3出口默认里面,我不明白这是怎么工作的?它如何知道文件夹中的哪个导出默认值将被导入?

谢谢。

回答

3

使用Webpack,当您导入文件夹时,模块加载器将导入文件夹内的index.js。您正在index.js中导出索引,因此您在执行import reducer from './reducers'时会导入它。导入文件夹只是import reducer from reducers/index的简写。意思是两个进口声明是等价的。

总结起来,import reducer from './reducers'import reducer from reducers/index相同。

+0

谢谢!所以默认情况下,如果我们希望从文件夹中导入某个文件,那么该文件必须命名为index.js? –

+0

@ Quoc-Hao-Tran。是或你需要明确命名文件。例如'从reducer/myReducer进口减速器' –

+1

*“使用ES6”*请注意,此行为与ES6/JavaScript无关。如何解释模块标识符取决于环境*模块加载器*或所使用的模块捆绑器。你所描述的行为对于NodeJS和webpack是很常见的。 –