为什么导出的项目中未包含的代码仍然在导入时运行?

时间:2017-04-17 19:09:15

标签: reactjs

//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

在MyLife函数仍然在index.js中运行之前的Console.log,即使我们刚刚导入了一个空的MyLife函数。

1 个答案:

答案 0 :(得分:2)

当您的ES6代码被转换为ES5然后执行时,预计会发生所描述的行为。

  

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

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

  

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