Apa yang baru di Angular 10.1

Angular 10.1.0, rilis titik tindak lanjut untuk Angular 10, dirilis 2 September, membawa peningkatan kinerja ke kompiler dan router bersama dengan alat ekstraksi pesan baru. 

Angular 10 secara umum tersedia sebagai rilis produksi pada 24 Juni. Peningkatan besar-besaran ke kerangka kerja berbasis TypeScript yang dikembangkan Google lebih menekankan pada peningkatan kualitas, alat, dan ekosistem daripada fitur baru.

Angular 10 lebih kecil dari Angular versi sebelumnya. Kemampuan baru mencakup pemilih rentang tanggal baru di pustaka komponen UI Material Angular dan peringatan untuk impor CommonJS. Peringatan impor CommonJS memperingatkan pengembang ketika dependensi yang dikemas dengan CommonJS dapat mengakibatkan aplikasi yang lebih besar dan lebih lambat, memungkinkan pengembang untuk mengganti bundel modul ECMAScript.

Selain itu, pengaturan opsional yang lebih ketat menawarkan penyiapan proyek yang lebih ketat saat membuat ruang kerja baru dengan ng new, melalui ng new --strict. Mengaktifkan tanda ini menginisialisasi proyek baru dengan pengaturan baru untuk meningkatkan pemeliharaan, membantu menangkap bug, dan memungkinkan CLI untuk melakukan pengoptimalan lanjutan pada aplikasi.

Tempat mengunduh Angular 10

Anda dapat menemukan rilis umum Angular 10 di GitHub. Untuk memperbarui instalasi Angular Anda saat ini, Anda dapat menjalankan perintah ini:

ng update @ angular / cli @ angular / core

Fitur baru di Angular 10.1.0

Rilis Angular 10.1.0, tersedia di GitHub, mencakup kemampuan dan peningkatan baru berikut: 

  • Untuk meningkatkan kinerja di compiler-cli, Angular 10.1 memiliki perbaikan untuk regresi kinerja yang mempengaruhi penggunaan kembali program tambahan.
  • Untuk kinerja router, prioritizedGuardValueoperator diterapkan untuk mengoptimalkan CanLoadpelindung.
  • ProgramBasedEntryPointFinderakan menggunakan kembali EntryPointManifestuntuk memuat dependensi entry-point bila memungkinkan, yang menghindari keharusan untuk menguraikannya lagi pada setiap pemanggilan ngcc.
  • Alat ekstraksi pesan baru didukung, yang pada akhirnya akan diintegrasikan ke dalam CLI.
  • Untuk fitur build Bazel, LinkabablePackageInfosedang ditambahkan ke ng-moduleaturan, memungkinkan linker untuk menautkan ng_moduletarget dengan benar di tindakan waktu proses Node.js.
  • Lebih banyak wawasan ditambahkan ke diagnostik yang dihasilkan untuk kesalahan evaluasi statis.
  • Sebuah opsi telah ditambahkan untuk dukungan HTTP URL absolut.
  • Dukungan TypeScript 4.0 telah ditambahkan ke kompiler.
  • canparse() diagnostik terpapar.
  • Peningkatan kinerja telah dilakukan pada router, formulir, CLI kompilator, dan alat kompatibilitas kompilator ngcc.
  • Modifikasi pengait siklus hidup dapat dilakukan kapan saja sebelum bootstrap.
  • Sejumlah perbaikan besar ditawarkan untuk inti, router, dan bagian lain dari Angular.

Fitur baru di Angular 10

Fitur utama Angular 10 meliputi:

  • TSlib, pustaka runtime untuk TypeScript yang berisi fungsi pembantu, telah diperbarui ke TSlib 2.0. Alat analisis statis TSLint untuk TypeScript telah diperbarui ke TSLint 6.
  • Antarmuka kompilator telah ditambahkan yang membungkus kompilator ngtsc sebenarnya. Kompilator khusus layanan bahasa mengelola beberapa file pemeriksaan ketik menggunakan antarmuka proyek, membuat Scriptinfos seperlunya.
  • Konfigurasi browser untuk proyek baru telah diperbarui untuk mengecualikan browser lama yang jarang digunakan. Dukungan tidak berlaku lagi untuk Internet Explorer 9, Internet Explorer 10, dan Internet Explorer Mobile.
  • Angular Package Format tidak lagi menyertakan bundel ESM5 atau FESM5, menghemat waktu pengunduhan dan penginstalan saat menjalankan yarnatau npm installuntuk paket dan pustaka Angular.
  • Untuk compiler, rentang nama telah ditambahkan untuk pembacaan properti dan pemanggilan metode.
  • EntryPointFinder, pencari titik masuk berbasis program, telah ditambahkan yang dapat diunggulkan dari impor dalam program yang ditentukan oleh file tsjconfig.json. Ini diharapkan lebih cepat daripada DirectoryWalkerEntryPointFinderketika program aktif hanya mengimpor sebagian kecil dari titik masuk yang terpasang. 
  • Pelengkapan otomatis sedang dihapus dari entitas HTML, seperti &, karena nilai yang dipertanyakan dan masalah kinerja.
  • Pemetaan eksplisit sedang diekspos dari closure ke file devmode. Fitur ini ditujukan untuk alat pengembangan yang harus menerjemahkan input build produksi ke dalam mode dev yang setara.
  • Dalam perubahan yang melanggar, generik telah dijadikan wajib untuk ModuleWithProviders. Parameter tipe generik telah diperlukan agar ModuleWithProviderspola dapat bekerja dengan kompilasi Ivy dan pipeline rendering, tetapi sebelum komit ini, View Engine mengizinkan tipe generik dihilangkan. Jika pengembang menggunakan ModuleWithProviderstanpa jenis generik, migrasi versi 10 akan memperbarui kode. Tetapi jika pengembang menggunakan View Engine dan bergantung pada pustaka yang menghilangkan tipe generik, kesalahan versi akan dikeluarkan. Dalam kasus ini, ngcc tidak akan membantu dan migrasi hanya akan mencakup kode aplikasi. Penulis perpustakaan harus dihubungi untuk memperbaiki perpustakaan mereka. Sebagai solusinya, skipLibChecks dapat disetel ke false di tsconfig atau memperbarui aplikasi untuk menggunakan Ivy saja.
  • TypeScript 3.9 sekarang ditampilkan, dengan dukungan untuk TypeScript 3.8 telah dihapus. Ini adalah perubahan besar. TypeScript 3.6 dan TypeScript 3.7 juga tidak lagi didukung.
  • Peningkatan kinerja pemeriksaan tipe telah dilakukan pada compiler-cli.
  • Untuk meningkatkan kinerja, komputasi basePathstelah dibuat malas, sehingga pekerjaan hanya dilakukan jika diperlukan TargetedEntryPointFinder. Sebelumnya, basePaths dihitung setiap kali penemu dibuat, yang merupakan upaya yang sia-sia jika titik masuk yang ditargetkan telah diproses.
  • Penggabungan beberapa file terjemahan didukung. Sebelumnya, hanya satu file terjemahan yang diizinkan untuk setiap lokal. Sekarang pengguna dapat menentukan beberapa file per lokal, dan transaksi dari setiap file akan digabungkan dengan ID pesan.
  • Batas waktu penguncian asinkron dapat dikonfigurasi. Ini menambahkan dukungan untuk file ngcc.config.js untuk menyetel  opsi retryAttemptsdan retryDelayuntuk AsyncLocker. Pengujian integrasi menambahkan pemeriksaan baru untuk waktu tunggu dan menggunakan ngcc.config.js untuk mengurangi waktu tunggu agar pengujian tidak memakan waktu terlalu lama.
  • Dalam perubahan yang dapat menyebabkan gangguan, peringatan tentang elemen yang tidak dikenal sekarang dicatat sebagai kesalahan. Meskipun ini tidak akan merusak aplikasi, ini mungkin membuat alat tersandung yang mengharapkan tidak ada yang dicatat melalui console.error. 
  • Dalam perubahan lain yang mengganggu, setiap resolver yang kembali EMPTYakan membatalkan navigasi. Untuk memungkinkan navigasi melanjutkan, pengembang harus memperbarui resolver untuk memperbarui beberapa nilai, seperti default!Empty.
  • Penambahan informasi ketergantungan dan pemilih ng-konten ke metadata. Fitur kompilator yang diusulkan ini akan memberikan metadata tambahan yang berguna untuk alat seperti Angular Language Service, menawarkan kemampuan untuk memberikan saran untuk arahan / komponen yang ditentukan di perpustakaan.
  • Peningkatan performa, dicapai dengan mengurangi ukuran manifes entrypoint dan teknik caching dalam manifes. Selain itu, caching dependensi dilakukan di manifes entrypoint dan dibaca dari sana, bukan dihitung setiap saat. Sebelumnya, meskipun titik entri tidak perlu diproses, ngcc (kompiler kompatibilitas Angular Ivy) akan mengurai file dari titik entri untuk menghitung dependensi, yang akan memakan banyak waktu untuk modul large_node.
  • Untuk meningkatkan kinerja ngcc, pelaporan langsung dari file kunci usang sekarang diizinkan. Selain itu, salinan cache dari file tsconfig yang diurai disimpan yang dapat digunakan kembali jika jalur tsconfig sama.
  • Dalam perubahan yang melanggar, logika telah diperbarui yang berkaitan dengan pemformatan periode hari yang melewati tengah malam. Saat memformat waktu dengan batau Bmemformat kode, string yang dirender tidak menangani periode hari yang merentang hari dengan benar. Sebaliknya, logika tersebut kembali ke kasus default AM. Logika ini telah diperbarui sehingga cocok dengan waktu dalam periode hari yang melewati tengah malam, sehingga sekarang akan menampilkan keluaran yang benar, seperti at nightdalam kasus bahasa Inggris. Aplikasi yang menggunakan salah satu formatDate()atau DatePipeatau kode format bdan  Bakan terpengaruh oleh perubahan ini.
  • Untuk router, CanLoadpenjaga sekarang bisa kembali Urltree. Seorang CanLoadpenjaga kembali Urltreemembatalkan navigasi dan pengalihan saat ini. Ini cocok dengan perilaku saat ini yang tersedia untuk CanActivatepenjaga yang juga telah ditambahkan. Ini tidak mempengaruhi pramuat. Seorang CanLoadpenjaga memblokir preloading; setiap rute dengan CanLoadpenjaga tidak akan dimuat sebelumnya dan penjaga tidak akan dijalankan sebagai bagian dari pramuat.
  • Propagasi rentang nilai yang benar dalam ExpressionBinding ekspresi mikrosyntax ke ParsedProperty, yang pada gilirannya akan menyebarkan rentang ke AST template (baik VE dan Ivy). Proposal ini juga untuk penyusun.
  • Dalam perbaikan ke inti, logika akan ditambahkan ke migrasi kelas tanpa dekorasi untuk menghiasi kelas turunan dari kelas tanpa dekorasi yang menggunakan fitur Angular.
  • Dalam perubahan yang melanggar, jenis Urlatcher akan mencerminkan bahwa itu selalu bisa mengembalikan nol.
  • Untuk service-worker, perbaikan telah dilakukan untuk situasi di mana ada kemungkinan service worker tidak akan pernah mendaftar ketika ada tugas yang berjalan lama atau waktu tunggu berulang.
  • Sejumlah perbaikan bug telah dilakukan termasuk compiler yang menghindari ekspresi tak terdefinisi dalam larik berlubang dan inti yang menghindari kesalahan migrasi saat simbol yang tidak ada diimpor. Ada juga solusi di inti untuk bug inlining Terser. Perbaikan bug lainnya dengan tepat mengidentifikasi modul yang terpengaruh oleh penggantian di TestBed.
  • Angular NPM tidak lagi berisi komentar jsdoc tertentu untuk mendukung pengoptimalan lanjutan Closure Compiler. Ini adalah perubahan besar. Dukungan untuk Closure Compiler dalam paket telah bersifat eksperimental dan rusak selama beberapa waktu. Siapapun yang menggunakan Closure Compiler kemungkinan lebih baik menggunakan paket Angular yang dibangun dari sumber secara langsung daripada menggunakan versi yang dipublikasikan di NPM. Sebagai solusi sementara, pengguna dapat mempertimbangkan untuk menggunakan pipeline build mereka saat ini dengan tanda Penutupan --compilation_level=SIMPLE. Tanda ini akan memastikan bahwa pipeline build menghasilkan artefak yang dapat dibangun dan dijalankan, dengan biaya peningkatan ukuran payload karena pengoptimalan lanjutan dinonaktifkan.