2017-03-31 46 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是的。 –