2017-04-17 63 views
1
//Govegan.js 
console.log('inside Govegan.js'); 

export function MyLife(){ 
//empty funciton 
} 

//index.js 
import React from 'react'; 
import ReactDOM from 'react-dom'; 

import {Govegan} from './Govegan'; 

class App extends.React.Component{ 
render(){ 
    return(<div>Hello</div>); 
} 
} 

ReactDOM.render(<App/>, document.getElementById('app')); 
//console output: inside Govegan.js 

Console.log在MyLife函数仍然在index.js中运行之前,即使我们只是导入了一个空的MyLife函数。为什么导入的项目中未包含的代码仍然运行?

+0

您也可以导出常量,因此节点需要在整个文件中运行代码才能正确导出所有内容,您的情况是导出一个函数,但正如我所说的,节点需要运行所有内容以查找是否还有别的东西需要导出。 – Crysfel

回答

2

当您的ES6代码被转译为ES5然后执行时,预计会出现所描述的行为。

在当前模块系统(ES5)中,需要执行代码以找出导出的内容和导入的内容。

这是导入console.log时导入文件的原因,因为导入的文件被执行。

在ES6中,预计不会发生这种情况,因为导入和导出是在编译时静态识别的,并且不需要执行代码来解析导入和导出。

相关问题