发表在

角训练

Angular 15有什么新特性?

Angular 15于2022年11月初发布。这个版本带来了很多新特性,比我们以前使用的Angular主要版本都要多。

让我们一个一个地深入研究一些重要的新功能:

指令组合API

在Angular 15之前,我们可以使用继承来创建一个扩展另一个指令的指令。虽然继承可以工作,但使用复合通常会更灵活,这正是Angular 15允许我们做的。

这是怎么做到的呢?如果我们想要创建一个自动应用一个或多个其他指令的组件或指令,我们可以使用以下语法:

@ component ({
选择器:“管理页面”,
模板:“admin-menu.html”,
hostDirectives:(MenuBehavior),
})
导出类AdminMenu {}

在上面的例子中,指令MenuBehavior总是应用于AdminMenu组件,不需要向组件的宿主HTML元素添加任何选择器。

甚至可以使用以下语法将输入和输出转发到这些指令:

@ component ({
选择器:“管理页面”,
模板:“admin-menu.html”,
hostDirectives: [{
指令:MenuBehavior,
输入:['menuId: id'],
输出:['menuClosed: closed'],
}),
})
导出类AdminMenu {}

上面的代码意味着id属性上的管理页面元素变成menuId的输入MenuBehavior指令。同样,关闭的输出管理页面元素变成menuClosed的输出MenuBehavior

结果,AdminMenu组件可以这样使用:

如你所见,这个MenuBehavior指令在HTML中不“可见”。所以不需要额外的选择器。

完整的文档可以在这里找到更多关于指令组合API

Angular认证考试

稳定的独立api

Angular 14中引入的独立组件API作为一个开发人员预览现在完全稳定和开发人员预览。

注意,你可以用新的Angular CLI选项生成一个独立的组件:

MyComponent——独立的

这个特性完全支持无模块的Angular应用。例如,我们可以使用以下语法的独立组件引导这样一个应用程序:

bootstrapApplication (MyStandaloneAppComponent);

这种变化的另一个后果是可以在没有模块的情况下进行惰性加载。相反,我们可以使用下面的语法惰性加载一堆路由:

export const appRoutes: Routes = [{
路径:“懒”,
loadChildren: () => import('./lazy/lazy.routes')
.then(routes => routes. lazyroutes)
});

lazyRouteslazy.routes.ts像这样:

import {Routes} from '@angular/router';
import {LazyComponent} from './lazy.component';
import {LazyDashboardComponent} from './lazy-dashboard.component';

export const lazyRoutes: Routes = [
{path: ",组件:LazyComponent},
{path: 'dashboard',组件:LazyDashboardComponent},
];

不涉及模块!

图像优化指令(NgOptimizedImage)

当涉及到任何web应用程序的性能时,图像是至关重要的。但不幸的是,我们可以尝试优化Javascript代码并在各处节省数千字节,结果却发现我们的努力被大量需要花费太多时间才能下载的图像所破坏。

图像指令的设计就是为了帮助解决这个问题。

它的作用:

  • 智能延迟加载:在页面加载时用户不可见的图像稍后会在用户向下滚动到该页面部分时加载。
  • 关键图像的优先级:首先加载基本图像(例如标题横幅)
  • 针对流行图像工具的优化配置:如果你使用的是CDN,该指令将自动从CDN中选择适当的图像大小,根据该图像将显示在屏幕上的像素数优化下载大小。
  • 内置错误和警告:除了上述内置优化之外,该指令还具有内置检查,以确保开发人员在图像标记中遵循了推荐的最佳实践。

指令可以与ngSrc属性,而不仅仅是src:

NgOptimizedImage指令是@的一部分角/常见模块,就像ngFor而且ngIf,所以如果你使用这些指令,它已经是你工具箱的一部分了。

它也可以作为一个独立的指令使用,而不需要导入CommonModule.它的官方文档和有关的更多信息这个指令背后的魔力可以在这里找到

更好的堆栈跟踪,以便更快地调试

堆栈跟踪对于更快地调试代码至关重要。因此,Angular团队会继续研究更多出错的方法,让堆栈跟踪变得更集中、更明确、更相关。

在此之前,堆栈跟踪将包括Zone.js,这对我们正在编写的代码没有帮助:

在Angular 15中,现在只显示堆栈跟踪的相关部分:

很快,它会变得更好,上面的最后一行被替换为:

At 

使用Medium应用程序

一个写着“在应用商店下载”的按钮,如果点击它将引导你进入iOS应用商店
一个写着“开始吧,谷歌Play”的按钮,如果点击它,就会引导你进入谷歌Play商店
Baidu
map