2017-03-31 47 views
3

的時候使用ES6命名進口減少集束大小我需要了解,當我使用了一個名爲導入這樣是否使用的WebPack

import { render } from 'react-dom' 

在束不的WebPack只包括渲染方法或者整個模塊特別是在使用樹抖動通過在babel配置中將模塊設置爲false並讓webpack關心它們?

另外,在進口的情況下發生反應

import React from 'react' 

& &

import React, { Component, PropTypes } from 'react' 

什麼是正確的方式?

+0

我不確定第一個問題,但第二個問題:像這樣導入React很常見,尤其是第二條語句,因爲您不希望每次都鍵入React.Component和React.PropTypes。所以他們都好。如果您正在使用基於類的組件並定義道具類型,則可以使用第二條語句。解構是爲了您的方便。 – nbkhope

+0

但是這並不需要更多的內存,因爲我們聲明瞭3個變量而不是一個? –

+0

爲什麼你沒有看到巴貝爾在這裏的經驗:https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Creact%2Cstage-2&targets=&browsers=&builtIns=false&code=import%20React% 2C%20%7B%20Component%20%7D%20from%20'react'%3B%0A%0Aclass%20SomeComponent%20extends%20Component%20%7B%0A%20%20render()%20%7B%0A%20 %20%20%20%20%3%2%3%3E%3%2%2%3%3B%0A%20%20%7D%0A%7D – nbkhope

回答

4

Tree-Shaking適用於可靜態分析的模塊(以獲取整個依賴樹而不運行代碼) - 並且它僅適用於ES2015模塊和非CommonJS(節點)模塊。

reactreact-dom,在本文寫作([email protected]),都沒有公開爲ES2015模塊。因此,無論這些 -

import { render } from "react-dom"; 

import ReactDOM from "react-dom"; 

會導致整個react-dom被包含在你的包。 react和其他作爲CommonJS模塊或UMD發佈的庫也適用。

+0

因此,據我瞭解第三方代碼,直到現在,我們不能從樹震動中受益,並且對於自己的模塊,編寫爲ES2015模塊適用? –

+0

@ziedhajsalah是的。 –