Ari*_*son 32 angular angular-ivy
任何人都可以清楚地解释为什么在 IVY 编译器中,不再需要入口组件 API 了吗?。换句话说,内部发生了什么变化,以便 Angular 突然不需要提醒您要动态创建组件
yur*_*zui 47
在 Ivy 之前,ViewEngine 编译器基于 NgModule 配置和 html 模板进行整个程序分析,然后根据这些全局传递信息生成模块和组件工厂。
这意味着,如果您有一个未在模板中引用的组件,并且您尚未将其添加到entryComponentsNgModule 数组中,则该组件将不会被编译,您也无法动态渲染它,因为 Angular 不知道从哪里获得此组件的工厂。
添加后,编译器将生成专用工厂,并将此工厂添加到内部 HashMap 中,以便可以通过ComponentFactoryResolver.
Ivy 引入了一个全新的ngtsc 编译器,其心理模型是装饰器就是编译器。
换句话说,ngtsc 的整体架构是一组 TypeScript 转换器:用于组件、管道、ngModule 等。
这些转换器发出静态函数,例如AppComponent.?fac,AppComponent.?cmp就地意味着转换后的代码驻留在原始组件/管道/ngModule 所在的同一文件中。所以我们在同一个地方有工厂(实例化 Angular 组件/管道/模块所需的所有代码),并且可以通过这些静态属性轻松访问它们。
简而言之,如果 TypeScript 编译中包含的文件具有带@Component装饰器的类,则 ngtsc 编译器将在同一文件中为此类发出工厂。
你可以猜到,如果你在任何文件中导入该组件,Angular 可以通过静态属性轻松发现它的工厂。
也可以看看:
| 归档时间: |
|
| 查看次数: |
4485 次 |
| 最近记录: |