2016-11-06 52 views
1

我已按照教程将来自here的webpack添加到Angular。如果我理解正确,我们将主模块提供给webpack,然后遍历整个树并将所有引用的文件添加到该包。我还读到,我们可以通过使用抖动来优化这一点。我们是否需要使用webpack和typescript/angular2进行抖动?

我在这里不理解的是,为什么我们需要树木震动,如果webpack已经只扫描“used”模块(即我们“导入”的模块)。

抖动树是否会做额外的事情(比如从模块中检查没有使用的类,并将它们从模块中删除,即使它被导入?)或者我误解了这个概念?

+3

是的,我们做。树木摇晃是关于摆脱未使用的进口模块部分。是的,它有'额外的东西'。 – estus

+0

我明白了。所以如果模块A导入模块B的类别为B1和B2,但模块A只使用B1,那么树状结构会从输出中“删除”B2? –

+0

@estus你可以添加答案,然后,我会接受它:) –

回答

0

正如在评论中提到的,真正的好处是它可以从文件中删除一些代码,而没有抖动,即使只使用一个输出分类,结果中也会有整个模块。

例子:

app.component.ts

export class AppComponent { 

    test(): void { 
     console.log("12345"); 
    } 
} 

export class AppComponentDeadCode { 

    test(): void { 
     console.log("54321"); 
    } 
} 

app.module.ts

import { AppComponent } from './app.component'; 

现在,在这个例子中,我们从来没有导入AppComponentDeadCode类。

  • 没有tree-shaking这两个类都将在结果模块/包中。
  • 使用tree-shaking将从结果模块/包中删除类AppComponentDeadCode(考虑到没有其他模块导入它)。

P.S.不幸的是,这个有光泽的玩具的状态是相当“公测”的,如果使用typecript/angular2,很难很容易地达到结果。有关它的更多信息here

相关问题