قسمت 23/24: Angular 16، RFCs برای Deferred Loading و داخلی Control-Flow
Angular 16.1 پشتیبانی از استفاده از روش واکشی بومی در HttpClient را اضافه کرده و یک تابع تبدیل برای @Input
دکوراتور دو RFC جدید جایگزینی برای دستورالعملهای جریان کنترل و بارگذاری مؤلفههای معوق پیشنهاد میکنند.
Angular 16.1
fetch
که در HttpClient
Angular 16.1 منتشر شده است که دو ویژگی مفید جدید را به فریمورک ارائه می کند.
اولین ویژگی به توسعه دهندگان اجازه می دهد تا از روش واکشی بومی به جای شیء قدیمی xhr در آن استفاده کنند HttpClient
. برای فعال کردن این، به سادگی از withFetch
عملکرد در provideHttpClient
پیکربندی این ویژگی با نسخه قبلی سازگار است HttpClient
ادامه بازگرداندن Observables و همه رهگیرها طبق انتظار عمل می کنند.
این بهبود به ویژه برای رندر سمت سرور مفید است، زیرا XmlHttpRequest (xhr) مختص مرورگرها است و در backend موجود نیست. با استفاده از روش واکشی بومی که در Node.js نیز موجود است، توسعهدهندگان میتوانند از کتابخانههای اضافی اجتناب کنند.
ماتیو ریگلر، یکی از مشارکت کنندگان جامعه، برای اجرای این ویژگی شایسته تقدیر است. از اواخر سال 2022، متیو بیش از 200 تعهد به مخزن Angular انجام داده است.
این کامیت جدید را معرفی می کند HttpBackend
پیاده سازی که با استفاده از fetch API درخواست می کند
این ویژگی یک پیشنمایش توسعهدهنده است و انتخابی است. با تنظیم ارائه دهندگان با فعال می شود provideHttpClient(withFetch())
.
در حال حاضر پیشرفت گزارش اجرا و استفاده نمی شود reportProgress: true
خطا خواهد کرد
نکته: واکشی API آزمایشی در Node است اما بدون پرچم از Node 18 به بعد در دسترس است. NB2: آزمایشهای ارائه شده در روابط عمومی اجرا نمیشوند fetch
در نسخه نود ارائه شده توسط فضای کاری bazel در دسترس نیست (16.14
)
ویرایش: پین کردن پاسخی که در زیر در مورد هدف این باطن جدید دادم:
Xhr
به صورت بومی در NodeJS پشتیبانی نمی شود و به polyfill نیاز دارد. در حال حاضر Angular از xhr2 برای این کار استفاده می کند. با این حال، polyfill عوارض جانبی دارد و در محیطهای غیر Node.js (مانند Edge Workers) کار نمیکند. همچنین مشکلات دیگری مانند https://github.com/angular/angular/issues/46930 وجود دارد (Gzip را پشتیبانی نمی کند).
نوع روابط عمومی
این روابط عمومی چه نوع تغییری را ایجاد می کند؟
آیا این روابط عمومی تغییری اساسی ایجاد می کند؟
https://github.com/angular/angular/issues/27689 بسته می شود
transform
که در @Input
دومین ویژگی معرفی شده در Angular 16.1 اضافه کردن یک تابع تبدیل برای دکوراتور @Input است. این تابع نگاشت از یک نوع داده به نوع دیگر را امکان پذیر می کند و آن را به ویژه برای «پارامترهای روتر به عنوان ورودی مؤلفه» که در Angular 16 معرفی شده است مفید می کند.
به عنوان مثال، هنگام دریافت پارامتر ID به عنوان یک رشته، توسعه دهندگان می توانند از تابع transform برای نگاشت آن به یک عدد قبل از اختصاص آن به یک ویژگی استفاده کنند.
RFC های جدید
ما همچنین دو RFC جدید دریافت کرده ایم.
جریان کنترل داخلی
اولین RFC جایگزینی برای دستورالعمل های کنترل جریان موجود مانند *ngIf
یا *ngFor
. به جای معرفی دستورالعمل های جدید، این یک نحو جدید است که مستقیماً در قالب ساخته شده است.
این امر نیاز به واردات دستورالعمل جداگانه را از بین می برد. این تغییر برای همسو شدن با سیگنال ها ضروری است.
نحو قالب جدید از چارچوب Svelte الهام گرفته شده است.
پیوند به RFC
بارگذاری معوق
RFC دوم بر بارگذاری به تعویق افتاده مؤلفه ها تمرکز می کند و یک نحو قالب جدید را برای تعیین شرایط زمانی که یک مؤلفه باید بارگذاری شود، مانند قابلیت مشاهده در viewport معرفی می کند.
همچنین به توسعه دهندگان اجازه می دهد تا رفتار رندر را برای حالت های بارگذاری یا خطا تعریف کنند. این ویژگی با عملکرد مشابه موجود در چارچوب React مطابقت دارد.
پیوند به RFC