什么时候我应该调用compileComponents,我怎么逃避不这样做?

时间:2017-04-25 10:39:43

标签: javascript angular

compileComponents的文档无益地说明了这一点:

  

使用templateUrl为测试的NgModule编译组件。有必要调用此函数,因为获取URL是异步的。

然而,这并没有解释在什么情况下调用这个函数是“必要的”,也没有解释不这样做的后果。我目前正在处理的应用程序对具有templateUrl s的组件进行单元测试,这些测试涉及使用By.css查看DOM,但即使我们从不调用compileComponents它们似乎也能正常工作我们代码库中的任何地方。同时,互联网上还有其他帖子,例如https://github.com/angular/angular-cli/pull/4757,表明不需要调用compileComponents

在什么情况下我应该称这种方法为什么?

1 个答案:

答案 0 :(得分:8)

  

在什么情况下我应该称这种方法为什么?

如果您正在使用webpack(如果配置正确),则构建会将templateUrl编译为内联templatestyleUrlsstyles。因此,不需要compileComponents,因为就像您使用templatestyles一样,即使您不是。{/ p>

例如,如果您正在使用SystemJS(或者您没有执行此预编译/转换的其他构建步骤),则不会发生这种情况。 Angular需要发出XHR请求来检索外部模板和外部样式,然后进行编译。在这里,您需要compileComponents

这在testing docs

中说明
  

WebPack开发人员无需调用compileComponents,因为它会将模板和css内联为运行测试之前的自动构建过程的一部分。