Angular 12停止支持老旧View Engine工作管线

在最新的Angular 12中,官方将弃用称为View Engine的旧版编译和渲染工作管线,这项更改不需要开发者执行任何的动作,而相依于View Engine的函数库,则能通过兼容性编译器ngcc继续正常运行。

从去年开始,Angular就开始默认使用新的渲染和编译工作管线Ivy,希望让Angular能够更简单、快速,而且易于维护,官方一直在微调静态检查和动态构建的平衡,确保Angular能够提供良好的类型检查、构建优化,并且快速侦测变更。从版本9开始,新的Angular应用程序便已经默认激活Ivy。

而为了让先前使用View Engine函数库的应用程序也能向后兼容,官方开发了ngcc的兼容编译器,开发者会在创建新项目或安装相依项目的时候,看到ngcc的运行。官方解释,ngcc是编译View Engine函数库的方法,可以让Ivy应用程序方便地使用,ngcc运行非常高性能,而且只会在必要的时候被调用,不过仍是安装相依项目和执行项目额外的一个步骤。

由于存在相依于View Engine函数库的意思,代表官方无法移除旧的实例,这样不只增加维护成本,也是拖慢整体Angular发展的速度,所以作为转换过渡时期,官方制定了Ivy函数库发布计划,来加速这个过程。当前开发人员可以将Ivy或View Engine用于应用程序或函数库,而要将整个生态系统统搬迁到Ivy,开发人员需要一个平滑的更新过程,官方观察到,当前绝大多数的应用程序,都已经使用Ivy。

但是与此同时,所有的函数库仍均为View Engine格式,通过兼容性编译器,开发人员可以在Ivy应用程序和函数库中使用这些函数库,而反过来View Engine是无法相依于Ivy。综合以上结果,并且参考函数库和应用程序作者的反馈,官方决定在Angular 12启动加速转移的计划,官方弃用了View Engine,并且禁止使用View Engine创建应用程序的功能,而且新函数库项目将默认使用Ivy。

为了确保相依Angular框架和组件的函数库可以平稳过渡,官方会继续使用View Engine格式发布,但是到了Angular 13,当大多数第三方函数库已经使用Ivy时,官方便会计划过渡Angular和组件。

目前所有项目都不需要为这些改变采取任何新措施,不会影响应用程序开发人员的日常开发工作,但建议仍在使用View Engine的开发者转移到Ivy,而对于View Engine应用程序或是函数库所相依的函数库,官方建议作者继续以View Engine格式发布,在所有相依的函数库和应用程序搬迁到Ivy前,不要以Ivy函数库发布。