关于 Angular 编程中的 shim 概念

举报
Jerry Wang 发表于 2023/04/04 08:47:43 2023/04/04
【摘要】 Angular Universal 渲染过程很直接,但同样容易被一些耗时的包含同步逻辑执行的代码所阻止。这意味着如果有一个进程,比如一个 Micro 任务,需要 ticks 才能完成,或者一个长期存在的 HTTP 请求,那么渲染过程将出现无法完成,或者需要更长的时间才能完成的风险。Micro 任务包括调用全局变量,如 setTimeout 和 setInterval,以及 Observabl...

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 可以帮助开发人员在不同的环境中编写可移植的应用程序,并解决一些运行时兼容性问题。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。