日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Angular 17 來了,性能大幅提升!

來源: 責編: 時間:2023-11-09 17:15:03 322觀看
導讀11 月 8 日,Angular 17 正式發(fā)布,該版本帶來了很多重要更新,包括:引入了可延遲的視圖,將性能和開發(fā)者體驗提升到新的高度。內(nèi)置控制流循環(huán)使運行速度在公共基準測試中提高了高達90%。混合渲染和客戶端渲染的構(gòu)建速度分別提

Amv28資訊網(wǎng)——每日最新資訊28at.com

11 月 8 日,Angular 17 正式發(fā)布,該版本帶來了很多重要更新,包括:Amv28資訊網(wǎng)——每日最新資訊28at.com

  • 引入了可延遲的視圖,將性能和開發(fā)者體驗提升到新的高度。
  • 內(nèi)置控制流循環(huán)使運行速度在公共基準測試中提高了高達90%。
  • 混合渲染和客戶端渲染的構(gòu)建速度分別提高了87%和67%。
  • 全新的外觀體現(xiàn)了 Angular 未來的功能。
  • 全新的互動學習之旅,帶來更好的用戶體驗。

面向未來的品牌形象

經(jīng)過過去幾個版本的快速發(fā)展,Angular 已經(jīng)迎來了全新的面貌。憑借基于信號的反應性、水化、獨立組件、指令組合等創(chuàng)新功能,它已經(jīng)得到了數(shù)百萬開發(fā)人員的實戰(zhàn)檢驗和廣泛喜愛。Amv28資訊網(wǎng)——每日最新資訊28at.com

盡管Angular發(fā)展迅速,但其品牌形象一直未能跟上——自AngularJS早期以來幾乎保持不變。今天,這個備受矚目的框架煥然一新,以反映其前瞻性的開發(fā)者體驗和卓越性能,進一步引領(lǐng) Web 開發(fā)的新潮流。Amv28資訊網(wǎng)——每日最新資訊28at.com

Angular 全新的 Logo 如下:Amv28資訊網(wǎng)——每日最新資訊28at.com

面向未來的文檔

除了新品牌,Angular 團隊還為 Angular 官方文檔開發(fā)了一個全新的主頁:angular.dev。針對新的文檔網(wǎng)站,Angular 團隊設計了一個全新的結(jié)構(gòu)、提供了全新的指南、改進了內(nèi)容質(zhì)量,并構(gòu)建了一個互動學習平臺,以便讓開發(fā)者在瀏覽器中按照自己的進度學習 Angular 和 Angular CLI。Amv28資訊網(wǎng)——每日最新資訊28at.com

新的交互式學習體驗由 WebContainers 提供支持,可以在任何現(xiàn)代 Web 瀏覽器中使用 Angular CLI 的強大功能!Amv28資訊網(wǎng)——每日最新資訊28at.com

Amv28資訊網(wǎng)——每日最新資訊28at.com

今天,正式推出 angular.dev 的 Beta 預覽版,并計劃在 v18 版本中將其設為 Angular 的默認官方網(wǎng)站。Amv28資訊網(wǎng)——每日最新資訊28at.com

下面來看看 Angular 17 中新增的功能。Amv28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置控制流

為了提升開發(fā)者的體驗,Angular 17 引入了新的塊模板語法,它通過簡單且聲明式的 API 提供了強大的功能。在幕后,Angular 編譯器將此語法轉(zhuǎn)化為高效的 JavaScript 指令,從而實現(xiàn)了控制流、延遲加載等更多操作。Amv28資訊網(wǎng)——每日最新資訊28at.com

為了解決開發(fā)人員在使用 *ngIf, *ngSwitch, 和 *ngFor 時的困擾,v17 中采用了新的塊語法以優(yōu)化內(nèi)置控制流。在經(jīng)過用戶研究和收集社區(qū)與合作伙伴的反饋后,決定為 Angular 創(chuàng)建一個內(nèi)置的控制流,致力于提高開發(fā)體驗!Amv28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置控制流可以:Amv28資訊網(wǎng)——每日最新資訊28at.com

  • 更符合人體工程學的語法,讓代碼更加直觀,減少文檔查找的需求。
  • 通過更優(yōu)化的類型檢查,提供更好的類型安全性。
  • 該功能主要在構(gòu)建時起作用,最大限度地減少了運行時占用空間,從而有可能將包大小減少30kb,同時提高 Core Web Vital 得分。
  • 無需額外導入,該功能自動適用于模板。

條件語句

先來使用*ngIf來實現(xiàn)條件語句。Amv28資訊網(wǎng)——每日最新資訊28at.com

<div *ngIf="loggedIn; else anonymousUser">  用戶已登錄</div><ng-template #anonymousUser>  用戶未登錄</ng-template>

使用內(nèi)置 if 語句,此條件將如下所示:Amv28資訊網(wǎng)——每日最新資訊28at.com

@if (loggedIn) {  用戶已登錄} @else {  用戶未登錄}

與傳統(tǒng)的 *ngIf 相比,內(nèi)置 if 語句的 @else 子句提供了更加簡潔的條件判斷。此外,當前的控制流使得 @else if 的實現(xiàn)變得輕而易舉,這在傳統(tǒng)的 *ngIf 中是不可能的。Amv28資訊網(wǎng)——每日最新資訊28at.com

在*ngSwitch中,改進的人體工程學表現(xiàn)得更為明顯:Amv28資訊網(wǎng)——每日最新資訊28at.com

<div [ngSwitch]="accessLevel">  <admin-dashboard *ngSwitchCase="admin"/>  <moderator-dashboard *ngSwitchCase="moderator"/>  <user-dashboard *ngSwitchDefault/></div>

通過內(nèi)置控制流,它變成了:Amv28資訊網(wǎng)——每日最新資訊28at.com

@switch (accessLevel) {  @case ('admin') { <admin-dashboard/> }  @case ('moderator') { <moderator-dashboard/> }  @default { <user-dashboard/> }}

新的控制流可以在 @switch 中的各個分支中實現(xiàn)更好的類型縮小,這在 *ngSwitch 中是不可能的。Amv28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置for循環(huán)

新版本還引入了內(nèi)置的 for 循環(huán),它極大地改善了開發(fā)者體驗,并將 Angular 的渲染速度提升到了全新的高度!Amv28資訊網(wǎng)——每日最新資訊28at.com

其基本語法是:Amv28資訊網(wǎng)——每日最新資訊28at.com

@for (user of users; track user.id) {  {{ user.name }}} @empty {  用戶列表為空}

我們經(jīng)常遇到由于 *ngFor 中缺少 trackBy 函數(shù)而導致的性能問題。@for 的不同之處在于,為了確??焖俚谋容^性能,track 是必需的。此外,由于它只是一個表達式而不是組件類中的方法,因此使用起來更加簡單。內(nèi)置的 @for 循環(huán)還提供了一個快捷方式,可以輕松遍歷零個項目的集合,這是通過可選的 @empty 塊實現(xiàn)的。Amv28資訊網(wǎng)——每日最新資訊28at.com

@for 語句使用了新的 diff 算法,與 *ngFor 相比具有更優(yōu)化的實現(xiàn),這使得社區(qū)框架基準測試的運行時間提高了 90%!Amv28資訊網(wǎng)——每日最新資訊28at.com

Amv28資訊網(wǎng)——每日最新資訊28at.com

內(nèi)置控制流的設計目標之一是實現(xiàn)完全自動化的遷移。要在現(xiàn)有項目中嘗試它,可以使用以下命令遷移:Amv28資訊網(wǎng)——每日最新資訊28at.com

ng generate @angular/core:control-flow

可延遲的視圖

利用新開發(fā)的塊語法,創(chuàng)建了一個強大而高效的新機制,可以讓應用運行得更快??裳舆t的視圖通過前所未有的便捷性,實現(xiàn)了聲明性且強大的延遲加載,從而將性能和開發(fā)者體驗提升到了新的高度。Amv28資訊網(wǎng)——每日最新資訊28at.com

Amv28資訊網(wǎng)——每日最新資訊28at.com

假設有一個博客頁面,希望實現(xiàn)用戶評論列表的延遲加載。當前需要使用 ViewContainerRef,同時還要處理各種復雜性,如清理、錯誤管理、占位符顯示等。處理這些邊角情況可能會涉及一些復雜的代碼,給測試和調(diào)試帶來困難。Amv28資訊網(wǎng)——每日最新資訊28at.com

新的可延遲視圖只需一行聲明性代碼就可以延遲加載注釋列表及其所有傳遞依賴項:Amv28資訊網(wǎng)——每日最新資訊28at.com

@defer {  <comment-list />}

這一切都是通過編譯時的轉(zhuǎn)換實現(xiàn)的:Angular 找到了 @defer 塊內(nèi)使用的組件、指令和管道,將所有復雜性抽象化,生成動態(tài)導入,并管理加載和狀態(tài)切換過程。Amv28資訊網(wǎng)——每日最新資訊28at.com

使用IntersectionObserver API來實現(xiàn)視口進入時的延遲加載組件涉及復雜的邏輯。然而,Angular 簡化了這個過程,只需添加一個可延遲的視圖觸發(fā)器即可!Amv28資訊網(wǎng)——每日最新資訊28at.com

@defer (on viewport) {  <comment-list />} @placeholder {  <img src="comments-placeholder.png">}

在上面的示例中,Angular 首先渲染占位符塊的內(nèi)容。當它在視口中可見時, 組件就會開始加載。加載完成后,Angular 會刪除占位符并渲染組件。Amv28資訊網(wǎng)——每日最新資訊28at.com

還有用于加載和錯誤狀態(tài)的塊:Amv28資訊網(wǎng)——每日最新資訊28at.com

@defer (on viewport) {  <comment-list/>} @loading {  Loading…} @error {  Loading failed :(} @placeholder {  <img src="comments-placeholder.png">}

Angular 為開發(fā)者管理了大量的復雜性。Amv28資訊網(wǎng)——每日最新資訊28at.com

可延遲視圖提供了更多觸發(fā)器:Amv28資訊網(wǎng)——每日最新資訊28at.com

  • on idle — 在瀏覽器閑置時延遲加載塊。
  • on immediate — 自動開始延遲加載,不會阻塞瀏覽器。
  • on timer(time) — 使用計時器延遲加載,時間可自定義。
  • on viewport和on viewport(ref) — viewport 還允許為錨元素指定一個引用。當錨元素可見時,Angular 會延遲加載組件并渲染它。
  • on interaction 和 on interaction(ref) — 允許在用戶與特定元素交互時啟動延遲加載。
  • on hover 和 on hover(ref) — 當用戶懸停元素時觸發(fā)延遲加載。
  • when expr — 允許通過返回一個 promise 的表達式來指定自定義條件。

可延遲視圖還提供了在渲染依賴項之前預取依賴項的能力。添加預取就像向 defer 塊添加預取語句一樣簡單,并且支持所有相同的觸發(fā)器。Amv28資訊網(wǎng)——每日最新資訊28at.com

@defer (on viewport; prefetch on idle) {  <comment-list />}

改進的混合渲染體驗

該版本在ng new中加入了提示,使服務端渲染(SSR)和靜態(tài)站點生成(SSG或預渲染)更易于使用。Amv28資訊網(wǎng)——每日最新資訊28at.com

Amv28資訊網(wǎng)——每日最新資訊28at.com

或者,可以通過以下方式在新項目中啟用 SSR:Amv28資訊網(wǎng)——每日最新資訊28at.com

ng new my-app --ssr

新的 @angular/ssr 包

已經(jīng)將 Angular 通用存儲庫移至 Angular CLI 存儲庫,使服務端渲染成為 Angular 工具產(chǎn)品中不可或缺的一部分!Amv28資訊網(wǎng)——每日最新資訊28at.com

從今天開始,要向現(xiàn)有應用添加混合渲染支持,可以運行以下命令:Amv28資訊網(wǎng)——每日最新資訊28at.com

ng add @angular/ssr

此命令將生成服務器入口點,并自動添加 SSR 和 SSG 構(gòu)建功能,同時默認啟用 hydration。@angular/ssr 提供了與當前處于維護模式的 @nguniversal/express-engine 相同的功能。如果你的項目正在使用 express-engine,Angular CLI 將自動將代碼更新為 @angular/ssr。Amv28資訊網(wǎng)——每日最新資訊28at.com

通過將 NgOptimizedImage 與帶有 DOM Hydration 的 Angular SSR 結(jié)合使用,累積布局偏移平均減少了 99.4%。Amv28資訊網(wǎng)——每日最新資訊28at.com

使用 SSR 部署應用

為了進一步增強開發(fā)人員體驗,Angular 團隊與云提供商密切合作,以實現(xiàn)順利部署到他們的平臺。Amv28資訊網(wǎng)——每日最新資訊28at.com

Firebase 現(xiàn)在將通過其新的框架感知CLI的早期預覽,以近乎零配置自動識別和部署 Angular 應用。Amv28資訊網(wǎng)——每日最新資訊28at.com

firebase experiments:enable webframeworksfirebase init hostingfirebase deploy

框架感知的 CLI 可識別 SSR、i18n、圖像優(yōu)化等的使用,使開發(fā)者能夠在經(jīng)濟高效的 serverless 基礎設施上提供高性能的 Web 應用。Amv28資訊網(wǎng)——每日最新資訊28at.com

對于那些擁有復雜 Angular monorepos 或只是喜歡原生工具的人,AngularFire 允許使用 ng deploy 部署到 Firebase:Amv28資訊網(wǎng)——每日最新資訊28at.com

ng add @angular/fireng deploy

為了實現(xiàn)在邊緣工作站上的部署,啟用了 Angular 服端渲染的ECMAScript模塊支持,引入了一個用于HttpClient的fetch后端,并與 CloudFlare 合作簡化了這一過程。Amv28資訊網(wǎng)——每日最新資訊28at.com

新的生命周期 Hooks

為了提高 Angular 的 SSR 和 SSG 的性能,從長遠來看,Angular 團隊希望擺脫 DOM 模擬和直接 DOM 操作。同時,在大多數(shù)應用的生命周期中,它們需要與元素交互以實例化第三方庫、測量元素大小等。Amv28資訊網(wǎng)——每日最新資訊28at.com

為了實現(xiàn)這一點,Angular 團隊開發(fā)了一組新的生命周期掛鉤:Amv28資訊網(wǎng)——每日最新資訊28at.com

  • afterRender — 注冊一個回調(diào),每次應用程序完成渲染時調(diào)用。
  • afterNextRender — 注冊一個回調(diào),以便在應用程序下次完成渲染時調(diào)用。

只有瀏覽器會調(diào)用這些 Hooks,這樣就能夠?qū)⒆远x DOM 邏輯安全地直接插入到組件中。例如,如果想實例化一個圖表庫,可以使用 afterNextRender:Amv28資訊網(wǎng)——每日最新資訊28at.com

@Component({  selector: 'my-chart-cmp',  template: `<div #chart>{{ ... }}</div>`,})export class MyChartCmp {  @ViewChild('chart') chartRef: ElementRef;  chart: MyChart|null;  constructor() {    afterNextRender(() => {      this.chart = new MyChart(this.chartRef.nativeElement);    }, {phase: AfterRenderPhase.Write});  }}

每個鉤子都支持一個“相位值”(例如讀取、寫入),Angular 使用這個相位值來合理安排回調(diào)的執(zhí)行時間,從而減少頁面布局的頻繁變化,提高整體性能。Amv28資訊網(wǎng)——每日最新資訊28at.com

新項目默認使用 Vite 和 esbuild

在v16版本中,首次引入了 esbuild 和 Vite 驅(qū)動的構(gòu)建體驗作為開發(fā)預覽。自此,許多開發(fā)人員進行了嘗試,一些企業(yè)合作伙伴反饋稱他們的一些應用的構(gòu)建時間縮短了67%!在 v17 中,新應用的構(gòu)建器已經(jīng)從開發(fā)預覽階段正式推出,并默認應用于所有新應用!Amv28資訊網(wǎng)——每日最新資訊28at.com

此外,在使用混合渲染時,更新了構(gòu)建管道。通過使用SSR和SSG,ng build的構(gòu)建速度提高了87%,ng serve的編輯刷新循環(huán)速度加快了80%。Amv28資訊網(wǎng)——每日最新資訊28at.com

Amv28資訊網(wǎng)——每日最新資訊28at.com

在未來的次要版本中,將提供原理圖,以使用混合渲染(使用 SSG 或 SSR 進行客戶端渲染)自動遷移現(xiàn)有項目。Amv28資訊網(wǎng)——每日最新資訊28at.com

DevTools 中的依賴注入調(diào)試

去年,Angular 團隊展示了 Angular DevTools 中依賴注入調(diào)試功能的預覽。在過去的幾個月里,實現(xiàn)了全新的調(diào)試 API,能夠插入框架的運行時并檢查注入器樹。Amv28資訊網(wǎng)——每日最新資訊28at.com

基于這些 API,構(gòu)建了一個檢查用戶界面,可以預覽:Amv28資訊網(wǎng)——每日最新資訊28at.com

  • 組件檢查器中組件的依賴關(guān)系。
  • 注入器樹和依賴關(guān)系解析路徑。
  • 單個注入器內(nèi)標明的供應商。

本文鏈接:http://www.www897cc.com/showinfo-26-19017-0.htmlAngular 17 來了,性能大幅提升!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何選擇 REST 還是 GraphQL

下一篇: 詳解六種最常見的軟件供應鏈攻擊

標簽:
  • 熱門焦點
  • K60至尊版剛預熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競品的一加也坐不住了。一加中國區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內(nèi)市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領(lǐng)先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實現(xiàn)原理和應用
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應該選擇什么樣的著裝?&rdquo;近日,在網(wǎng)絡上,一個與著裝相關(guān)的帖子引發(fā)關(guān)注,在該帖子里,一位在高級寫字樓亞洲金
  • 華為將推出盤古數(shù)字人大模型 可幫助用戶12小時完成數(shù)字人生成

    在今日舉行的2023年華為云數(shù)字文娛AI創(chuàng)新峰會上,華為云全球Marketing與銷售服務總裁石冀琳表示,華為云將在后續(xù)推出盤古數(shù)字人大模型,可幫助用戶12小
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯(lián)發(fā)科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經(jīng)上市便受到了諸多用
Top 主站蜘蛛池模板: 道孚县| 丰台区| 理塘县| 襄汾县| 本溪市| 巫溪县| 厦门市| 仁怀市| 新绛县| 农安县| 安远县| 普定县| 社旗县| 蒙城县| 隆化县| 铜梁县| 肥西县| 娄底市| 那坡县| 宁津县| 汉阴县| 灌阳县| 揭阳市| 平远县| 江达县| 老河口市| 巴彦淖尔市| 沐川县| 大竹县| 淮阳县| 林甸县| 山阳县| 大埔区| 西宁市| 桐城市| 汾西县| 辛集市| 革吉县| 邹城市| 益阳市| 视频|