Apa yang baru dalam Angular 10.1

Angular 10.1.0, rilis titik tindak lanjut ke Angular 10, dikeluarkan pada 2 September, membawa peningkatan prestasi pada penyusun dan penghala bersama dengan alat pengekstrakan pesan baru. 

Angular 10 menjadi tersedia secara umum sebagai keluaran pengeluaran pada 24 Jun. Peningkatan utama ke kerangka kerja berasaskan TypeScript yang dikembangkan oleh Google memberi penekanan lebih pada peningkatan kualiti, alat, dan ekosistem daripada ciri baru.

Angular 10 lebih kecil daripada versi Angular sebelumnya. Keupayaan baru merangkumi pemilih julat tarikh baru di perpustakaan komponen UI Bahan Sudut dan amaran untuk import CommonJS. Amaran import CommonJS memberi amaran kepada pembangun apabila kebergantungan yang dikemas dengan CommonJS dapat menghasilkan aplikasi yang lebih besar dan lebih lambat, yang memungkinkan pembangun untuk menggantikan kumpulan modul ECMAScript.

Di samping itu, tetapan pilihan yang lebih ketat menawarkan penyediaan projek yang lebih ketat ketika membuat ruang kerja baru dengan ng new, melalui ng new --strict. Mengaktifkan bendera ini menginisialisasi projek baru dengan tetapan baru untuk meningkatkan pemeliharaan, membantu menangkap bug, dan membolehkan CLI melakukan pengoptimuman lanjutan pada aplikasi.

Di mana memuat turun Angular 10

Anda boleh mendapatkan siaran umum Angular 10 di GitHub. Untuk mengemas kini pemasangan Sudut semasa anda, anda boleh menjalankan perintah ini:

ng kemas kini @ angular / cli @ angular / core

Ciri baru dalam Sudut 10.1.0

Pelepasan Angular 10.1.0, tersedia di GitHub, merangkumi keupayaan dan penambahbaikan baru berikut: 

  • Untuk meningkatkan prestasi dalam compiler-cli, Angular 10.1 mempunyai perbaikan untuk kemerosotan prestasi yang mempengaruhi penggunaan semula program tambahan.
  • Untuk prestasi penghala, prioritizedGuardValuepengendali digunakan untuk mengoptimumkan CanLoadpengawal.
  • ProgramBasedEntryPointFinderakan digunakan kembali EntryPointManifestuntuk memuat kebergantungan titik masuk apabila mungkin, yang mengelakkan daripada menguraikannya lagi pada setiap permintaan ngcc.
  • Alat pengekstrakan mesej baru disokong, yang akhirnya akan disatukan ke dalam CLI.
  • Untuk alat Bazel build, LinkabablePackageInfosedang ditambahkan ke ng-moduleaturan, yang memungkinkan penghubung untuk menghubungkan ng_modulesasaran dengan tepat dalam tindakan runtime Node.js.
  • Lebih banyak pandangan ditambahkan pada diagnostik yang dihasilkan untuk kesalahan penilaian statik.
  • Satu pilihan telah ditambahkan untuk sokongan HTTP URL mutlak.
  • Sokongan TypeScript 4.0 telah ditambahkan ke pengkompil.
  • canparse() diagnostik terdedah.
  • Peningkatan prestasi telah dibuat pada penghala, bentuk, CLI penyusun, dan alat keserasian penyusun ngcc.
  • Pengubahsuaian cangkuk kitaran hidup boleh dilakukan bila-bila masa sebelum bootstrap.
  • Sejumlah pembaikan besar ditawarkan untuk teras, penghala, dan bahagian lain dari sudut.

Ciri baru di Angular 10

Ciri utama Angular 10 merangkumi yang berikut:

  • TSlib, perpustakaan runtime untuk TypeScript yang mengandungi fungsi pembantu, telah dikemas kini menjadi TSlib 2.0. Alat analisis statik TSLint untuk TypeScript telah dikemas kini ke TSLint 6.
  • Antaramuka pengkompil telah ditambahkan yang membungkus penyusun ngtsc sebenar. Penyusun khusus perkhidmatan bahasa menguruskan pelbagai jenis fail pemeriksaan menggunakan antara muka projek, membuat Scriptinfos jika perlu.
  • Konfigurasi penyemak imbas untuk projek baru telah dikemas kini untuk mengecualikan penyemak imbas yang lebih lama dan kurang digunakan. Sokongan tidak digunakan lagi untuk Internet Explorer 9, Internet Explorer 10, dan Internet Explorer Mobile.
  • Format Pakej Angular tidak lagi merangkumi bundel ESM5 atau FESM5, menjimatkan masa muat turun dan pemasangan semasa berjalan yarnatau npm installuntuk pakej dan perpustakaan sudut.
  • Untuk penyusun, rentang nama telah ditambahkan untuk pembacaan harta tanah dan panggilan kaedah.
  • EntryPointFinder, pencari titik masuk berasaskan program, telah ditambahkan yang dapat diturunkan dari import dalam program yang ditentukan oleh file tsjconfig.json. Ini diharapkan lebih cepat daripada DirectoryWalkerEntryPointFinderketika program aktif hanya mengimport sebahagian kecil dari pintu masuk yang dipasang. 
  • Pelengkapan automatik sedang dikeluarkan dari entiti HTML, seperti &, kerana nilai yang dipersoalkan dan masalah prestasi.
  • Pemetaan eksplisit sedang didedahkan dari penutupan ke fail devmode. Ciri ini ditujukan untuk alat pembangunan yang harus menerjemahkan input membina produksi ke setara devmode mereka.
  • Dalam perubahan yang mendadak, generik telah diwajibkan untuk ModuleWithProviders. Parameter jenis generik diperlukan agar ModuleWithProviderscorak berfungsi dengan penyusunan dan penyusunan saluran Ivy, tetapi sebelum melakukan ini, View Engine membenarkan jenis generik dihilangkan. Sekiranya pembangun menggunakan ModuleWithProviderstanpa jenis generik, migrasi versi 10 akan mengemas kini kodnya. Tetapi jika pembangun menggunakan View Engine dan bergantung pada perpustakaan yang menghilangkan jenis generik, ralat build akan dikeluarkan. Dalam kes ini, ngcc tidak akan membantu dan migrasi hanya akan meliputi kod aplikasi. Pengarang perpustakaan harus dihubungi untuk memperbaiki perpustakaan mereka. Sebagai jalan penyelesaian, skipLibChecks dapat disetel ke false di tsconfig atau mengemas kini aplikasi untuk menggunakan Ivy sahaja.
  • TypeScript 3.9 kini ditampilkan, dengan sokongan untuk TypeScript 3.8 telah dikeluarkan. Ini adalah perubahan yang mematikan. TypeScript 3.6 dan TypeScript 3.7 juga tidak lagi disokong.
  • Peningkatan prestasi pemeriksaan jenis telah dibuat pada compiler-cli.
  • Untuk meningkatkan prestasi, perhitungan basePathsdibuat malas, jadi kerja hanya dilakukan jika diperlukan di TargetedEntryPointFinder. Sebelumnya, basePaths dihitung setiap kali penemu itu diberi contoh, yang membuang-buang usaha dalam kasus ketika titik masuk yang disasarkan telah diproses.
  • Penggabungan pelbagai fail terjemahan disokong. Sebelum ini, hanya satu fail terjemahan bagi setiap tempat yang dibenarkan. Sekarang pengguna dapat menentukan beberapa fail per lokasi, dan transaksi dari setiap file akan digabungkan dengan ID pemesejan.
  • Batas waktu penguncian async dapat dikonfigurasikan. Ini menambahkan sokongan untuk fail ngcc.config.js untuk menetapkan retryAttemptsdan retryDelay pilihan untuk AsyncLocker. Ujian integrasi menambah cek baru untuk tamat waktu dan menggunakan ngcc.config.js untuk mengurangkan masa tamat untuk mengelakkan ujian terlalu lama.
  • Dalam perubahan yang ketara, amaran mengenai elemen yang tidak diketahui kini dicatat sebagai kesilapan. Walaupun ini tidak akan mematahkan aplikasi, ia mungkin menyandarkan alat yang tidak mengharapkan log masuk melalui konsol.error. 
  • Dalam perubahan pecah yang lain, penyelesai yang mengembalikan EMPTYakan membatalkan navigasi. Untuk membolehkan navigasi berterusan, pembangun mesti mengemas kini penyelesai untuk mengemas kini beberapa nilai, seperti default!Empty.
  • Penambahan maklumat ketergantungan dan pemilih ng-kandungan ke metadata. Ciri penyusun yang dicadangkan ini akan menyediakan metadata tambahan yang berguna untuk alat seperti Perkhidmatan Bahasa Sudut, yang menawarkan kemampuan untuk memberikan cadangan arahan / komponen yang ditentukan dalam perpustakaan.
  • Peningkatan prestasi, dicapai dengan mengurangkan ukuran manifes titik masuk dan teknik cache dalam manifes. Di samping itu, cache kebergantungan dilakukan dalam manifes titik masuk dan dibaca dari sana dan bukannya dikira setiap masa. Sebelumnya, walaupun titik masuk tidak memerlukan pemprosesan, ngcc (penyusun keserasian Angular Ivy) akan menguraikan fail-fail titik masuk untuk menghitung kebergantungan, yang memerlukan banyak masa untuk modul besar_node.
  • Untuk meningkatkan prestasi ngcc, pelaporan fail kunci basi kini dibenarkan. Sebagai tambahan, salinan cache dari file tsconfig yang diurai disimpan yang dapat digunakan kembali jika jalur tsconfig sama.
  • Dalam perubahan yang mendadak, logik telah diperbaharui berkaitan dengan format hari yang melintasi tengah malam. Semasa memformat waktu dengan batau Bformat kod, rentetan yang diberikan tidak menangani dengan tepat hari yang merangkumi hari. Sebaliknya, logiknya kembali kepada kes lalai AM. Logik ini telah diperbaharui sehingga sesuai dengan waktu dalam jangka waktu sehari yang melampaui tengah malam, jadi sekarang akan menghasilkan output yang betul, seperti at nightdalam bahasa Inggeris. Aplikasi yang menggunakan salah satu formatDate()atau DatePipeatau kod format bdan  Bakan dipengaruhi oleh perubahan ini.
  • Untuk penghala, CanLoadpenjaga sekarang boleh kembali Urltree. Seorang CanLoadpenjaga yang kembali Urltreemembatalkan navigasi dan pengalihan semasa. Ini sesuai dengan tingkah laku semasa yang tersedia untuk CanActivatepengawal yang juga telah ditambahkan. Ini tidak mempengaruhi pramuat. Seorang CanLoadpengawal menghalang sebarang pramuat; sebarang laluan dengan CanLoadpenjaga tidak akan dimuat dan pengawal tidak akan dilaksanakan sebagai sebahagian daripada pramuat.
  • Penyebaran rentang nilai yang betul dalam ExpressionBinding ekspresi mikrosintaks ke ParsedProperty, yang seterusnya akan menyebarkan span ke AST templat (baik VE dan Ivy). Cadangan ini juga adalah untuk penyusun.
  • Dalam memperbaiki inti, logik akan ditambahkan ke migrasi kelas yang tidak dihiasi untuk menghiasi kelas yang berasal dari kelas yang tidak dihiasi yang menggunakan ciri sudut.
  • Dalam perubahan yang mendadak, jenis Urlmatcher akan mencerminkan bahawa ia selalu boleh kembali kosong.
  • Bagi pekerja perkhidmatan, perbaikan telah dibuat untuk situasi di mana ada kemungkinan pekerja perkhidmatan tidak akan pernah mendaftar ketika ada tugas yang lama atau waktu tunggu berulang.
  • Sejumlah perbaikan bug telah dibuat termasuk penyusun menghindari ungkapan yang tidak ditentukan dalam array berlubang dan inti mengelakkan ralat penghijrahan ketika simbol yang tidak ada diimport. Terdapat juga jalan penyelesaian untuk inti tersering Terser. Perbaikan pepijat yang lain mengenal pasti modul yang terjejas oleh penggantian di TestBed.
  • NPM sudut tidak lagi mengandungi komen jsdoc tertentu untuk menyokong pengoptimuman lanjutan Closure Compiler. Ini adalah perubahan yang mematikan. Sokongan untuk Closure Compiler dalam pakej telah beberapa lama eksperimen dan rosak. Sesiapa yang menggunakan Closure Compiler mungkin lebih baik menggunakan pakej Angular yang dibina dari sumber secara langsung daripada menggunakan versi yang diterbitkan di NPM. Sebagai penyelesaian sementara, pengguna dapat mempertimbangkan untuk menggunakan saluran paip binaan mereka sekarang dengan bendera Penutupan --compilation_level=SIMPLE. Bendera ini akan memastikan bahawa saluran paip binaan menghasilkan artifak yang dapat dibina, dapat dijalankan, dengan kos peningkatan ukuran muatan kerana pengoptimuman lanjutan dinonaktifkan.