Angular Universal 渲染过程很间接,但同样容易被一些耗时的蕴含同步逻辑执行的代码所阻止。
这意味着如果有一个过程,比方一个 Micro 工作,须要 ticks 能力实现,或者一个长期存在的 HTTP 申请,那么渲染过程将呈现无奈实现,或者须要更长的工夫能力实现的危险。
Micro 工作包含调用全局变量,如 setTimeout 和 setInterval,以及 Observables。在不勾销它们的状况下调用它们,或者让它们在服务器上运行的工夫超过须要的工夫,可能会导致渲染成果不佳。
什么是 Angular 编程中的 shim 概念?
在 Angular 编程中,shim 是指一个额定的代码库或工具,用于在运行时提供一些缺失或不兼容的性能,以便应用程序可能在不同的环境中失常运行。
通常,shim 能够用来解决以下问题:
(1) 兼容性问题:某些浏览器或操作系统可能不反对某些 JavaScript 或 TypeScript 性能,shim 能够在这些环境中提供相似的性能,以便应用程序可能失常运行。
(2) 模块加载:在某些环境中,例如 Node.js 中,模块加载的形式可能与浏览器中的形式不同,shim 能够提供一些额定的代码,以便在这些环境中正确加载模块。
(3) Polyfills:polyfills 是一种非凡类型的 shim,用于提供某些缺失的性能,例如 Promise、fetch、Map、Set 等。这些性能在一些旧版本的浏览器中可能不受反对,然而能够通过 polyfills 在这些浏览器中应用。
在 Angular 编程中,常见的 shims 包含 Zone.js 和 Reflect-metadata 等。Zone.js 能够提供额定的代码,用于实现 Angular 中的变更检测和异步事件处理。Reflect-metadata 能够在运行时提供 TypeScript 中的元数据信息,以便在运行时进行反射和注入。
总的来说,shim 能够帮忙开发人员在不同的环境中编写可移植的应用程序,并解决一些运行时兼容性问题。