首页 > 解决方案 > 为什么 JIT 需要 Angular 反射 polyfill

问题描述

Angular browser support page中,关于 JIT 编译和 ES7/reflect polyfill 说:

如果您始终使用 AOT 并且仅使用 Angular 装饰器,则可以删除。

我对此有两点不清楚:

  1. 为什么 AOT 不需要使用反射?读取依赖注入的元数据不需要反射吗?

  2. “只使用 Angular 装饰器”是什么意思?

标签: angular

解决方案


为什么 AOT 不需要使用反射?读取依赖注入的元数据不需要反射吗?

是的,AOT 适用于不需要反射的编译版本。AOT 编译器静态解析所有元数据并将其转换为包含所有需要渲染的工厂。

“只使用 Angular 装饰器”是什么意思?

如果使用任何非 Angular 特定的装饰器,则必须包含该 polyfill,因为 AOT 编译器仅转换它知道的装饰器,即@Component@Input @NgModule。它还会从包中删除这些装饰器。对于其他将在运行时执行的装饰器,我们必须包含该 polyfill。


推荐阅读