@let:Angular 1 中的新功能编译器

@let:angular 1 中的新功能编译器

介绍

随着 angular 18.1 的到来,该版本为编译器引入了一项令人兴奋的新功能:声明一个或多个模板变量的能力。
如何使用此功能?有哪些不同的用例?

这篇文章旨在回答。

编译器的最新功能:@let

在最新版本的 angular 中,团队在编译器中引入了新功能,该功能转化为 @-syntax

这就是新的控制流语法的诞生

@if@为@开关

最近,@let

作为一般规则,创建模板变量的最简单方法是使用

带有关键字 as 的 *ngif 结构指令 关键词

或使用新的控制流语法

@if,关键字为

{{ user.name }}
@if(user$ |async; as user){
{{ user.name }}
}

登录后复制

这个方便的功能允许我们将异步管道的结果存储在变量中,以便稍后在模板中使用。

但是,这种语法引发了一些问题。在这里,条件检查异步管道的返回是否为 true,从而检查返回值是否与 javascript 中被视为 false 的任何值不同。

如果返回的是对象或数组,这个条件会非常有效。

但是如果返回的是一个数字,特别是数字 0

@if(((numbers$ |async) !=== undefined || (numbers$ |async) !=== null) ; as mynumber){  
{{ mynumber }}
}

登录后复制

这就是@let 发挥作用的地方。

@let 不检查条件,它只是允许您以简单的方式声明本地模板变量

所以上面的代码示例写起来变得更加简单和优雅

@let mynumber = (numbers$ | async) ?? 0;
{{ mynumber }}

登录后复制

这样 mynumber 变量将始终显示。

使用@let的不同方式

变量声明最经典的场景之一就是存储复杂表达式的结果。

在条件下使用函数一直是不可取的。在某种条件下使用函数会对性能产生影响,因为鼠标最轻微的移动或模板的更改都会重新评估该函数。

@let,如上所述,不求值,而只是声明一个局部变量。仅当该变量的依赖项之一发生更改时,才会重新计算该变量。所以对于复杂表达式这样的表达式来说,调用函数并不是一个坏主意。

    @for(user of users(); track user.id) { @let isadmin = checkifadmin(user);
  • user is admin: {{ isadmin }}
  • }

登录后复制

将 @let 与信号一起使用

@let 与信号兼容,使用方式如下

@let usercolor = user().preferences?.colors?.primarycolor || 'white';user favorite color is {{ usercolor }}

登录后复制

@let 和 javascript 表达式

如您所见,@let 可用于计算任何类型的 javascript 表达式,除了类的实例化之外

通过这种方式,可以解释算术运算符,并且可以在几行或仅一行上声明多个变量。

@for (score of scores(); track $index) { @let total = total + score, max = calcMax(score);

final score: {{ total }}

}

登录后复制

@let 带来的其他很酷的东西

如上所述,@let 的行为与 javascript 中 let 的行为非常相似,它有以下好处

作用域的工作方式类似于 javascript 中的 let 作用域模板中更好的打字干扰如果在声明之前使用变量(let),则会引发错误

以上就是@let:Angular 1 中的新功能编译器的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2673135.html

(0)
上一篇 2025年3月7日 13:37:00
下一篇 2025年3月7日 13:37:08

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JavaScript:数据类型、变量和运算符

    JavaScript 是一种多功能语言,因其动态和灵活的特性而脱颖而出。让我们探索 JavaScript 的三个基本方面:数据类型、变量和运算符。 数据类型: JavaScript 提供了多种数据类型来处理不同类型的值。理解这些对于有效的编…

    2025年3月7日
    200
  • 笑话回顾:什么时候运行?

    tl;dr:执行顺序 顶层和describe() 块中的所有内容(其中describe() 块基本上是iife)之前所有()顶级第一级描述()第n级describe()在每个()之前顶级第一级描述()第n级describe()测试()每个之…

    2025年3月7日
    200
  • 我写了一个模块捆绑器注释等

    我构建了一个简单的 javascript 捆绑器,结果比我预期的要容易得多。我将分享我在这篇文章中学到的所有知识。 编写大型应用程序时,最好将 javascript 源代码划分为单独的 js 文件,但是使用多个脚本标签将这些文件添加到 ht…

    2025年3月7日
    200
  • JavaScript 基础知识 – 开始

    一些新开发人员甚至那些有经验的开发人员,可能会在没有扎实的基础知识的情况下面临问题或困难。 为了解决这个问题,在本系列中,我想回顾一下 javascript 基础知识,以保持新鲜感,并帮助任何来到这里的开发人员记住任何特定主题。 首先,我们…

    2025年3月7日
    200
  • JavaScript 初学者最佳实践

    javascript 初学者最佳实践 javascript 是一种通用且广泛使用的语言,对于 web 开发至关重要。无论您是编程新手还是从其他语言过渡,了解 javascript 的最佳实践对于编写干净、高效且可维护的代码都至关重要。本文涵…

    2025年3月7日
    200
  • 了解 JavaScript 中的闭包:综合指南

    javascript 是一种多功能且强大的语言,其最有趣的功能之一就是闭包的概念。闭包是理解 javascript 函数如何工作的基础,尤其是与作用域和变量访问相关的函数。在本教程中,我们将探讨什么是闭包、它们如何工作,并提供实际示例来帮助…

    2025年3月7日
    200
  • 揭秘 JavaScript:深入探讨提升、临时死区和可变状态

    下面我有两行甜蜜而简单的代码。但我可以向你保证,它要么会让你很困惑(因为你忽略了 js 的下划线原则),要么安慰你。 但是它已经加载了如下的知识概念 吊装暂时死区变量(未声明、未初始化、未定义)(奖励) 我的矛盾声明就像 var、const…

    2025年3月7日
    200
  • 我见过的关于 JS 中闭包的最简单的解释(来源:roadmapsh)

    想在这里分享我在网上看到的关于著名的闭包主题的最简单的解释。 (来源:roadmap.sh) 闭包是一个即使在外部函数返回后也可以访问其外部函数作用域的函数。这意味着即使函数完成后,闭包也可以记住并访问其外部函数的变量和参数。 functi…

    2025年3月7日
    200
  • 理解 JavaScript 中的作用域链

    在 javascript 中,作用域链是一种定义变量解析在嵌套函数中如何工作的机制。它决定了引用变量时查找变量的顺序。 作用域链的工作原理是首先在局部作用域中查找变量,然后向上移动到外部(父)作用域,最后在必要时查找全局作用域。这个过程一直…

    2025年3月7日
    200
  • Let、Const 和 Var 概述:主要差异解释

    曾经有一段时间,我使用并理解了 javascript 中 let、const 和 var 的实际用法,但用语言解释它是具有挑战性的。如果您发现自己处于类似的困境,那么需要关注的关键点是范围、提升、重新初始化和重新分配方面的差异。 范围: 如…

    2025年3月7日
    200

发表回复

登录后才能评论