【Angular开发】Angular 16发布:发现前7大功能

Angular 于2023年5月3日发布了主要版本升级版Angular 16。作为一名Angular开发人员,我发现这次升级很有趣,因为与以前的版本相比有一些显著的改进。

因此,在本文中,我将讨论Angular 16的前7个特性,以便您更好地理解。

1.Angular Signals

Angular Signals是自Angular 16路线图发布以来,开发人员一直在等待的主要功能。虽然Solid.js启发了这个概念,但它对Angular来说是一个全新的概念。它允许您定义反应值并表达它们之间的依赖关系。换句话说,您可以有效地使用Angular信号来管理Angular应用程序中的状态更改。

信号可以被识别为用户可以同步访问的规则变量。但它还附带了一些附加功能,比如通知其他人(组件模板、其他信号、函数等)其值的更改,以及以声明的方式创建派生状态。

以下示例显示了如何使用“角度”信号。

import { Component, computed, effect, signal } from '@angular/core';
import { CommonModule } from '@angular/common';
import { bootstrapApplication } from '@angular/platform-browser';@Component({selector: 'my-app',standalone: true,imports: [CommonModule],template: `<h1>Calculate Area</h1><p>Answer : {{ area() }}</p><button (click)="calculateArea(10,10)">Click</button>`,
})export class App {height = signal(5);width = signal(5);area = computed(() => this.height() * this.width());constructor() {effect(() => console.log('Value changed:', this.area()));}calculateArea(height: number, width: number) {this.height.set(height);this.width.set(width);}
}

在本例中,我创建了一个计算值区域和两个名为height和width的信号。当通过调用calculateArea()函数更改信号值时,计算值将更新并显示在模板中。这里有一个工作的Stacklitz示例供您尝试。

虽然这看起来很神奇,但Angular并没有放弃zone.js和RxJS。信号是一个可选功能,Angular在没有它们的情况下仍然可以工作。Angular将在即将推出的版本中逐步改进Signals,使其成为一个完整的包。

2.服务器端渲染

与React相比,缺乏服务器端渲染(SSR)支持是Angular最显著的缺点之一。Angular 16通过对服务器端渲染的一些重大改进解决了这个问题。

以前,Angular对SSR使用破坏性水合作用。在破坏性水合中,服务器首先将应用程序渲染并加载到浏览器。然后,当客户端应用程序下载并启动时,它会破坏已经渲染的DOM,并从头开始重新渲染客户端应用程序。这种方法导致了重大的用户体验问题,如屏幕闪烁,并对一些核心Web Vitals(如LCP或CLS.anug)产生了负面影响。

Angular 16引入了一种称为非破坏性水合的新方法来防止这些缺点。下载并引导客户端应用程序时,DOM不会被破坏。它使用相同的DOM,同时使用事件侦听器等客户端功能对其进行丰富。

无损水合作用仍处于开发者预览阶段。但是,您可以通过在引导应用程序时添加provideClientHydration()作为提供程序来启用它。

import {bootstrapApplication,provideClientHydration,
} from '@angular/platform-browser';...bootstrapApplication(RootCmp, {providers: [provideClientHydration()]
});

根据Angular的官方发布说明,这只是一个开始。他们计划在下一步探索部分水合作用,并满足开发人员的几个要求。您可以在这里找到更多关于Angular SSR开发计划的信息。

3.实验性Jest支持

Jest是JavaScript开发人员中使用最多的测试框架之一。Angular已经听取了开发人员的请求,并在Angular 16中引入了实验性的Jest支持。

您所要做的就是使用npm安装Jest并更新angular.json文件。

// Install jest
npm install jest --save-dev// angular.json
{"projects": {"my-app": {"architect": {"test": {"builder": "@angular-devkit/build-angular:jest","options": {"tsConfig": "tsconfig.spec.json","polyfills": ["zone.js", "zone.js/testing"]}}}}
}

他们计划在未来的更新中将所有现有的Karma项目转移到WebTestRunner。

4.基于esbuild的构建系统

Angular 16为开发服务器(ng-server)引入了一个基于esbuild的构建系统。Vite为这个新的开发服务器供电,并使用esbuild来构建工件。

这仍然处于开发人员预览阶段,但您可以通过使用以下内容更新angular.json文件来启用它。

"architect": {"build": { "builder": "@angular-devkit/build-angular:browser-esbuild",
...

5.Required Inputs

在Angular 16中,现在可以根据需要定义输入值。您可以使用@Input装饰器或@Component装饰器输入数组来定义一个。

export class App {@Input({ required: true }) name: string = '';
}// or
@Component({...inputs: [{name: 'name', required: true}]
})

6.路由器输入

Angular 16允许您将路由参数绑定到组件输入中,从而无需将ActivatedRoute注入组件。若要启用此功能,必须导入RouterModule并在app.module.ts文件中启用bindToComponentInputs属性。

@NgModule({imports: [...RouterModule.forRoot([], {bindToComponentInputs: true })...],...
})
export class AppModule {}

The following example shows how we can bind query params to component inputs.

// Route
const routes: Routes = [{path: "articles",component: ArticleComponent,},
];// Component
@Component({})
export class ArticleComponent implements OnInit {@Input() articleId?: string; ngOnInit() {}
}

Now, when you navigate to the articles route, you can pass query params using the name of the component input. In this case, an example URL will look like the following.

http://localhost:4200/articles?articleId=001

If the input name is too long, you can rename the query parameter.

http://localhost:4200/articles?id=001 @Input('id') articleId?: string;

You can also use this approach to bind path parameters and route data.

7.独立项目支持

Angular 14开始支持独立于模块的独立组件。Angular 16通过支持独立项目创建,将此提升到了一个新的水平。

Angular 16有一个通过Angular CLI创建独立项目的标志。您必须使用-standalone标志执行ng个新命令。然后,它将生成一个没有NgModules的项目。

ng new --standalone

Standalone Project Support in Angular 16

其他功能

Angular 16还提供了许多其他改进开发人员体验的更改:

  • 通过语言服务自动导入组件和管道。
  • 通过CLI支持TypeScript 5.0、ECMAScript装饰器、服务工作者和SCP。
  • CSP支持在线样式。
  • 自闭标签。
  • 停止对ngcc和TypeScript 4.8的支持。

结论

总体而言,Angular 16提供了一些重要功能。这些功能中的大多数都是我们在后续版本中可以期待的更大更新的垫脚石。您可以按照Angular的官方文档将现有项目升级到Angular 16。

如果您有任何问题,请通过我们的支持论坛、支持门户或反馈门户与我们联系。我们非常乐意为您提供帮助!

本文:【Angular开发】Angular 16发布:发现前7大功能 | 程序员云开发,云时代的程序员.

欢迎收藏【架构师酒馆】和【开发者开聊】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259652.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发问题】vue的前端和java的后台,用sm4,实现前台加密,后台解密

sm4加密 vue引入的包代码加密解密 javamaven代码运行结果 vue 引入的包 npm install sm-crypto代码加密解密 加密&#xff1a; key &#xff1a;代表着密钥&#xff0c;必须是16 字节的十六进制密钥 password &#xff1a;加密前的密码 sm4Password &#xff1a;代表sm4加密…

Navicat 技术指引 | 适用于 GaussDB 分布式的服务器对象的创建/设计

Navicat Premium&#xff08;16.3.3 Windows版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构…

【后端学前端学习记录】第一天 css动画 内凹导航栏

1、学习信息 css动画 内凹导航栏_哔哩哔哩_bilibili 随便找的的视频&#xff0c;主要原因是在公司不方便有声音 2、源码 最终源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title…

网页设计中增强现实的兴起

目录 了解增强现实 增强现实的历史背景 AR 和网页设计的交叉点 AR 在网页设计中的优势 增强参与度和互动性 个性化的用户体验 竞争优势和品牌差异化 AR 在网页设计中的用例 结论 近年来&#xff0c;增强现实已成为一股变革力量&#xff0c;重塑了我们与数字领域互动的方式。它被…

3D渲染和动画制作软件KeyShot Pro mac附加功能

KeyShot 11 mac是一款专业化实时3D渲染工具&#xff0c;使用它可以简化3d渲染和动画制作流程&#xff0c;并且提供最准确的材质及光线&#xff0c;渲染效果更加真实&#xff0c;KeyShot为您提供了使用 CPU 或 NVIDIA GPU 进行渲染的能力和选择&#xff0c;并能够线性扩展以获得…

【C++】:搜索二叉树

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关多态的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…

深入体验:山海鲸可视化软件的独特魅力

山海鲸可视化软件是一款功能强大的数据可视化工具&#xff0c;作为该软件的资深用户&#xff0c;我深感其独特的魅力和优势。下面&#xff0c;我将从软件特点、操作体验、数据交互和实际应用场景等方面&#xff0c;为大家详细介绍山海鲸可视化软件。 首先&#xff0c;山海鲸可视…

快速入门Tailwind CSS:从零开始构建现代化界面

快速入门Tailwind CSS&#xff1a;从零开始构建现代化界面 介绍 Tailwind CSS 是一个以原子类的方式快速构建界面的 CSS 框架。它提供了丰富的预定义类&#xff0c;使得开发者能够快速构建样式和布局。 安装和设置 首先&#xff0c;我们需要在项目中安装 Tailwind CSS。可以…

MindOpt APL:一款适合优化问题数学建模的编程语言

什么是建模语言 建模语言是一种描述信息或模型的编程语言&#xff0c;在运筹优化领域&#xff0c;一般是指代数建模语言。 比如要写一个线性规划问题的建模和求解&#xff0c;可以采用C、Python、Java等通用编程语言来实现计算机编程&#xff08;码代码&#xff09;&#xff0…

3DCAT+上汽奥迪:打造新零售汽车配置器实时云渲染解决方案

在 5G、云计算等技术飞速发展的加持下&#xff0c;云渲染技术迎来了突飞猛进的发展。在这样的背景下&#xff0c;3DCAT应运而生&#xff0c;成为了业内知名的实时云渲染服务商之一。 交互式3D实时云看车作为云渲染技术的一种使用场景&#xff0c;也逐步成为一种新的看车方式&a…

如何使用 Wordpress?托管, 网站, 插件, 缓存

这是该系列教程的第一个教程&#xff0c;最终将在运行高性能 LEMP 堆栈的阿里云 ECS 实例上运行一个新的 WordPress 站点。 在本教程中&#xff0c;我们将创建一个运行 Ubuntu 16.04 的实例&#xff0c;然后通过创建超级用户并禁用 root 登录来保护服务器&#xff0c;最后配置…

PandoraFMS 监控软件 SQL注入漏洞复现

0x01 产品简介 Pandora FMS是西班牙Artica公司的一套监控系统。该系统通过可视化的方式监控网络、服务器、虚拟基础架构和应用程序等。 0x02 漏洞概述 Pandora FMS监控软件存在SQL注入漏洞,攻击者通过chart_generator.php 来执行恶意语句,获取数据库敏感信息。 0x03 复现…