2017-04-17 52 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中,預計不會發生這種情況,因爲導入和導出是在編譯時靜態識別的,並且不需要執行代碼來解析導入和導出。

相關問題