从2023年ng-conf更新

我写这个消息悬而未决的desertic景观从ng-conf内华达州我飞回加州2023。已经两天充斥着大量的信息,我将解压缩的一些主要详细公告在接下来的时事通讯。

现在,我将关注一些快速消息分组的主题:

RxJs

  • RxJs 8即将出炉,它将小于RxJs 7 30%和60%小于RxJs 6 !
  • 将会支持异步/等待可见的语法。
  • 我们将有一些新的语法糖链运营商使用rx ()函数。代码如奥林匹克广播服务公司美元.pipe(地图(…),过滤器(…))将可写为奥林匹克广播服务公司美元rx(地图(…),过滤器(…))。可选的,但很高兴知道。

NgRx

  • 支持一个信号存储快到了

Endbridge

其他很酷的新闻

  • 吟游诗人ChatGPT谷歌的回应,是建立与角!
  • Analog.js是角元程序。它支持服务器端渲染,静态页面,后端api,和普通角前端代码都在一个项目中,Javascript。类似于下。js的反应。模拟仍然是一个进展中的工作,但看起来有前途。

新控制流RFC

的一个主要公告的第1天ng-conf控制流注释请求(RFC)

我们都熟悉ngFor,ngIf,ngSwitch有时,他们的语法可以棘手。

如果ngIf替换为:

如果比支持的新语法ngIf,如其他的如果甚至可读其他的例:

角团队的目标是引入语法,更接近常规的Javascript和删除这些结构性指令的必要性。

循环是这样,甚至支持模板。所有当前ngFor局部变量可以自动不需要变量的别名:

最后,ngSwitch将成为以下:

角CLI在角代码会执行语法更新,所以没有必要担心这些模板重写。你可以找到所有的原因角团队决定在这些语法与其他选项RFC。当然,你欢迎您的评论和建议添加到列表中。

新角16.1是什么?

角16.1及时发布ng-conf 2023(注:如果你在盐湖城,随时来接我,——你会打个招呼一个标签和一个20美元的优惠券为我的视频课程认证考试)。

三个新功能在角16.1:

变换选择@Input ()

我们现在可以有一个函数,将一个输入值,使它适合一个组件的需求。说,例如,你的输入值是一个对象,你想从中拿出一个属性或返回一个布尔值,如果通过一个给定的检查;然后变换是你需要的东西:

这个简单的例子(代码)说明了新选项还可以做什么。

5.1支持打印稿

没有大量的新事物打字稿5.1主要是,现在我们可以使用不同类型的setter和getter函数返回未定义的

支持在HttpClient fetch ()

这是在开发者预览。你可以使它在你的配置HttpClient如下:

我不知道有任何使用它的好处,但它可能打开门与其他HTTP提供者集成之上的获取。等着瞧了。

在任何情况下,我将报告我的外卖的ng-conf通讯在接下来的几天里。激动人心的日子吧!

如何提高性能与纯管道

在这个通讯早些时候,我们看到一个组件模板中调用一个方法是一种反模式。反模式是使用的解毒剂纯粹的管

默认情况下,所有管道中使用角是纯粹的。自定义默认管道也单纯。做一个管不洁净的唯一方法是添加配置选项纯:假它的装饰:

什么是纯管?

纯管角将执行只有当有一个纯粹的变化它的输入值。它是自动优化了性能因为它只在需要时执行。

纯粹的改变是一个原始的输入值(如字符串,数量,或布尔),或改变对象引用(如日期,数组,或对象)。

换句话说,如果我们考虑下面的用例:

这里有一些例子的纯净和变量的变化:

与所有这些信息,我们现在准备调用一个格式化函数模板的使用管道(表示函数会调用变换管道的方法)。我们知道这个函数将只有当输入值变化(纯粹的),它允许我们决定当我们想要管再次通过执行一个纯净或改变输入值。

最后,我们可以仔细检查我们的管是按预期工作使用角分析器确保管道不运行比预期的更多。

RxJs和信号的互操作性

角16介绍了几个全新的相关特性角信号,其中包括两个函数使RxJs互操作性。

toObservable ()

名字就说明了一切。toObservable ()将信号并返回它的数据作为观测:

这个新的观测更新每次底层信号值更新。我们可以使用异步订阅烟斗,例如(演示代码):

toSignal ()

toSignal ()做相反的toObservable ()。结果是一个可观测到的信号。因为信号不同于可见(信号总是从一开始就有一个值-一个可观测的不),默认的行为toObservable ()是返回一个信号,它支持吗未定义的默认值:

这可以改变通过提供一个初始值如下:

ngFor局部变量

我们使用ngFor指令以至于很容易忘记或者忽略它的一些最强大的特性之一。

例如,它是相当常见的访问数组中的项指数我们处理,但实际上五个局部变量可以使用:

  • 指数:数量:当前项的索引iterable。
  • 数:数:iterable的长度。
  • 第一:布尔:真当项第一项iterable。
  • 最后:布尔:真当项目最后一项iterable。
  • 甚至:布尔:真当项指数在iterable。
  • 奇怪:布尔:真当项目有一个奇怪的指数iterable。

使用这些局部变量的语法如下所示,您可以使用多达你想要在一个ngFor指令如下:

如何创建一个副本在Javascript中吗?

现代Javascript开发人员使用下面的语法来创建对象的一个副本:

              
              
对象复制= {…};
代码语言:JavaScript(javascript)

虽然这种方法工作很好,它会创建一个浅拷贝的对象,而不是一个成熟的克隆,也重复嵌套对象和数组。

因此,执行Javascript开发人员学到的另一个把戏深拷贝:

              
复制=JSON.parse (JSON.stringify(对象));
代码语言:JavaScript(javascript)

这种方法的思想是将一个对象转变为一个JSON字符串解析该字符串之前回一个全新的对象。它的工作原理,但它不是优雅,看起来像一个黑客。

因此,一个更好的方法添加到Javascript语言:structuredClone函数。这是一个语法改进创造深克隆效率:

              
复制= structuredClone(对象);
代码语言:JavaScript(javascript)

最近在所有主要的浏览器支持的功能如图所示我可以用:

如果您需要支持另一个浏览器,有一个polyfill实现core.js

与ngrxLet使用加载模板

不久之前,我写了一篇关于如何做ngrxLet是一个异步的改进版本管吗。我还介绍了如何使用骨架装入器与角

今天,让我们来看看如何使用这两个工具来显示一个“加载”模板而等待一个可观测的数据。

提醒一下,这里是如何ngrxLet可用于跟踪不同的可观察到的事件:

在上面的代码片段中,我们收到发出的值美元的数量可观察到的变量中n。我们将收到任何错误在一个变量中e。我们将获得完成状态(真正的)在一个变量c

这是我们如何通过自定义加载模板ngrxLet使用一个模板参考变量:

当然,加载模板可以定制任何你想要的,包括一具骷髅装载机或动画gif图像。该特性称为悬念模板,和一个可观测的悬念状态,直到它释放它的第一个事件(下一个,错误,或完整的作为覆盖在这里)。

RxJs的()和()

到目前为止,我们已经介绍了一些RxJs运营商和信息主题,但可见自己呢?

有一些实用函数创建可见的现有数据。如此可见立即返回数据,完成订阅。

这是这样一个可观测的创建的一个例子的()功能:

和创建一个示例从()功能:

之间的区别的()从()是,的()释放出所有的数据在一个单一的发射,而从()使用一个数组的物品并发出一个接一个,没有排放之间的延迟。

换句话说:

有什么意义的可观察到的就立即返回数据和没有异步?首先是测试。能够返回一个可观测的硬编码的数据是完美的单元测试,我们可以不使用实际的快速验证不同的场景HttpClient为例。

二是缓存数据并返回它作为一个可观测(可以更轻松的完成BehaviorSubjectReplaySubject)。例如,假设我们有一项服务,检索世界上所有国家的列表从服务器。我们知道,每天都不会改变,所以我们想要缓存,如果另一个组件请求数据,而不是另一个HTTP请求,我们返回一个可观测的数据:

注意使用利用操作员监视可见,捕获数据,并将其存储在我们的“缓存”变量。

这样,该API和组件总是订阅一个可以观察到的是一致的,不知道如果数据来自一个服务器或本地缓存。