มีอะไรใหม่ใน Angular 10.1.1
Angular 10.1.0 ซึ่งเป็นรุ่นติดตามผลของ Angular 10 ได้รับการเผยแพร่เมื่อวันที่ 2 กันยายนโดยนำการปรับปรุงประสิทธิภาพมาสู่คอมไพเลอร์และเราเตอร์พร้อมกับเครื่องมือแยกข้อความใหม่
โดยทั่วไปแล้ว Angular 10 จะวางจำหน่ายในรูปแบบการผลิตในวันที่ 24 มิถุนายนการอัปเกรดครั้งใหญ่เป็นเฟรมเวิร์ก TypeScript ที่พัฒนาโดย Google ให้ความสำคัญกับการปรับปรุงคุณภาพเครื่องมือและระบบนิเวศมากกว่าคุณสมบัติใหม่
Angular 10 มีขนาดเล็กกว่า Angular เวอร์ชันก่อนหน้า ความสามารถใหม่รวมถึงตัวเลือกช่วงวันที่ใหม่ในไลบรารีองค์ประกอบ Angular Material UI และคำเตือนสำหรับการนำเข้า CommonJS คำเตือนการนำเข้า CommonJS จะแจ้งเตือนนักพัฒนาเมื่อการอ้างอิงที่รวมแพ็กเกจกับ CommonJS อาจส่งผลให้แอปพลิเคชันขนาดใหญ่และทำงานช้าลงทำให้นักพัฒนาสามารถแทนที่บันเดิลโมดูล ECMAScript ได้
นอกจากนี้การตั้งค่าที่เข้มงวดขึ้นซึ่งเป็นตัวเลือกช่วยให้การตั้งค่าโครงการที่เข้มงวดยิ่งขึ้นเมื่อสร้างพื้นที่ทำงานใหม่ด้วยng new
ผ่านng new --strict
. เปิดใช้งานแฟล็กนี้เริ่มต้นโปรเจ็กต์ใหม่ด้วยการตั้งค่าใหม่เพื่อปรับปรุงความสามารถในการบำรุงรักษาช่วยจับจุดบกพร่องและอนุญาตให้ CLI ทำการเพิ่มประสิทธิภาพขั้นสูงบนแอพ
จะดาวน์โหลด Angular 10 ได้ที่ไหน
คุณสามารถค้นหา Angular 10 รุ่นทั่วไปได้ใน GitHub หากต้องการอัปเดตการติดตั้งเชิงมุมในปัจจุบันของคุณคุณสามารถเรียกใช้คำสั่งนี้:
ng ปรับปรุง @ เชิงมุม / cli @ เชิงมุม / แกน
คุณสมบัติใหม่ใน Angular 10.1.0
Angular 10.1.0 รีลีสพร้อมใช้งานบน GitHub มีความสามารถและการปรับปรุงใหม่ดังต่อไปนี้:
- เพื่อปรับปรุงประสิทธิภาพใน compiler-cli Angular 10.1 มีการแก้ไขสำหรับการถดถอยของประสิทธิภาพที่ส่งผลต่อการนำโปรแกรมกลับมาใช้ใหม่
- สำหรับประสิทธิภาพของเราเตอร์ตัว
prioritizedGuardValue
ดำเนินการจะถูกนำไปใช้เพื่อเพิ่มประสิทธิภาพCanLoad
ยาม ProgramBasedEntryPointFinder
จะใช้ซ้ำEntryPointManifest
เพื่อโหลดการอ้างอิงจุดเริ่มต้นเมื่อเป็นไปได้ซึ่งหลีกเลี่ยงไม่ต้องแยกวิเคราะห์อีกครั้งในทุกการเรียกใช้ ngcc- รองรับเครื่องมือแยกข้อความใหม่ซึ่งจะรวมเข้ากับ CLI ในที่สุด
- สำหรับเครื่องมือบิลด์ Bazel
LinkabablePackageInfo
จะถูกเพิ่มเข้าไปในng-module
กฎเพื่อให้ตัวเชื่อมโยงสามารถเชื่อมโยงng_module
เป้าหมายในแอ็คชันรันไทม์ของ Node.js - มีการเพิ่มความเข้าใจเพิ่มเติมในการวินิจฉัยที่สร้างขึ้นสำหรับข้อผิดพลาดในการประเมินแบบคง
- มีการเพิ่มตัวเลือกสำหรับการรองรับ URL HTTP แบบสมบูรณ์
- เพิ่มการสนับสนุน TypeScript 4.0 ในคอมไพเลอร์แล้ว
canparse()
การวินิจฉัยถูกเปิดเผย- มีการปรับปรุงประสิทธิภาพของเราเตอร์ฟอร์มคอมไพเลอร์ CLI และเครื่องมือความเข้ากันได้ของคอมไพเลอร์ ngcc
- การปรับเปลี่ยนตะขอเกี่ยวกับวงจรชีวิตสามารถทำได้ทุกเมื่อก่อนบูตสแตรป
- มีการแก้ไขจำนวนมากสำหรับคอร์เราเตอร์และส่วนอื่น ๆ ของ Angular
คุณสมบัติใหม่ใน Angular 10
คุณสมบัติที่สำคัญของ Angular 10 มีดังต่อไปนี้:
- TSlib ไลบรารีรันไทม์สำหรับ TypeScript ที่มีฟังก์ชันตัวช่วยได้รับการอัพเดตเป็น TSlib 2.0 เครื่องมือวิเคราะห์แบบคงที่ TSLint สำหรับ TypeScript ได้รับการอัพเดตเป็น TSLint 6
- มีการเพิ่มอินเทอร์เฟซของคอมไพเลอร์ที่ห่อหุ้มคอมไพเลอร์ ngtsc จริง คอมไพลเลอร์เฉพาะบริการภาษาจัดการไฟล์ตรวจสอบการพิมพ์หลายไฟล์โดยใช้อินเทอร์เฟซโปรเจ็กต์สร้าง Scriptinfos ตามความจำเป็น
- การกำหนดค่าเบราว์เซอร์สำหรับโครงการใหม่ได้รับการอัปเดตเพื่อยกเว้นเบราว์เซอร์รุ่นเก่าที่ใช้งานน้อย เลิกรองรับการสนับสนุนสำหรับ Internet Explorer 9, Internet Explorer 10 และ Internet Explorer Mobile
- Angular Package Format ไม่รวมบันเดิล ESM5 หรือ FESM5 อีกต่อไปช่วยประหยัดเวลาในการดาวน์โหลดและติดตั้งเมื่อรัน
yarn
หรือnpm install
สำหรับแพ็คเกจ Angular และไลบรารี - สำหรับคอมไพลเลอร์มีการเพิ่มช่วงชื่อสำหรับการอ่านคุณสมบัติและการเรียกใช้เมธอด
EntryPointFinder
มีการเพิ่มตัวค้นหาจุดเริ่มต้นตามโปรแกรมที่สามารถเริ่มต้นได้จากการนำเข้าในโปรแกรมที่ระบุโดยไฟล์ tsjconfig.json สิ่งนี้คาดว่าจะเร็วกว่าDirectoryWalkerEntryPointFinder
เมื่อโปรแกรมที่ใช้งานอยู่เพียงนำเข้าจุดเข้าที่ติดตั้งในสัดส่วนเล็กน้อย- กำลังลบการเติมข้อความอัตโนมัติออกจากเอนทิตี HTML เช่น
&
เนื่องจากค่าที่น่าสงสัยและปัญหาด้านประสิทธิภาพ - การแมปอย่างชัดเจนกำลังถูกเปิดเผยจากการปิดไปยังไฟล์ devmode คุณลักษณะนี้มุ่งเป้าไปที่เครื่องมือในการพัฒนาที่ต้องแปลอินพุตบิลด์การผลิตเป็นค่าเทียบเท่า devmode
- ในการเปลี่ยนแปลงที่
ModuleWithProviders
รุนแรงมีการบังคับใช้ทั่วไปสำหรับจำเป็นต้องมีพารามิเตอร์ประเภททั่วไปเพื่อให้ModuleWithProviders
รูปแบบทำงานกับการคอมไพล์ Ivy และการแสดงผลไปป์ไลน์ แต่ก่อนที่จะคอมมิตนี้ View Engine อนุญาตให้ละเว้นประเภททั่วไปได้ หากนักพัฒนาใช้งานModuleWithProviders
โดยไม่มีประเภททั่วไปการย้ายข้อมูลเวอร์ชัน 10 จะอัปเดตโค้ด แต่ถ้านักพัฒนาใช้ View Engine และขึ้นอยู่กับไลบรารีที่ละเว้นประเภททั่วไปข้อผิดพลาดของการสร้างจะออกมา ในกรณีนี้ ngcc จะไม่ช่วยและการย้ายข้อมูลจะครอบคลุมเฉพาะรหัสแอปพลิเคชันเท่านั้น ผู้เขียนห้องสมุดควรได้รับการติดต่อเพื่อแก้ไขห้องสมุดของพวกเขา ในการแก้ปัญหาชั่วคราวสามารถตั้งค่า skipLibChecks เป็น false ใน tsconfig หรืออัปเดตแอปเพื่อใช้ Ivy เท่านั้น - ขณะนี้มีคุณลักษณะ TypeScript 3.9 พร้อมการสนับสนุน TypeScript 3.8 ที่ถูกลบออก นี่คือการเปลี่ยนแปลงที่แตกหัก ไม่รองรับ TypeScript 3.6 และ TypeScript 3.7 อีกต่อไป
- มีการปรับปรุงประสิทธิภาพการตรวจสอบประเภทสำหรับคอมไพเลอร์ - คลิ
- เพื่อปรับปรุงประสิทธิภาพการคำนวณของ
basePaths
ได้ถูกทำให้ขี้เกียจดังนั้นงานจึงทำได้เฉพาะเมื่อจำเป็นTargetedEntryPointFinder
เท่านั้น ก่อนหน้าbasePaths
นี้คำนวณเมื่อใดก็ตามที่เครื่องมือค้นหาถูกสร้างอินสแตนซ์ซึ่งเป็นการเสียความพยายามในกรณีที่มีการประมวลผลจุดเริ่มต้นเป้าหมาย - รองรับการรวมไฟล์แปลหลายไฟล์ ก่อนหน้านี้อนุญาตให้ใช้ไฟล์แปลได้เพียงไฟล์เดียวต่อสถานที่ ตอนนี้ผู้ใช้สามารถระบุไฟล์ได้หลายไฟล์ต่อโลแคลและธุรกรรมจากแต่ละไฟล์จะถูกรวมเข้าด้วยกันโดย ID การส่งข้อความ
- สามารถกำหนดค่าการหมดเวลาล็อก Async ได้ สิ่งนี้เพิ่มการรองรับไฟล์ ngcc.config.js สำหรับการตั้งค่า
retryAttempts
และretryDelay
ตัวเลือกสำหรับ AsyncLocker การทดสอบการรวมจะเพิ่มการตรวจสอบใหม่สำหรับการหมดเวลาและใช้ ngcc.config.js เพื่อลดเวลาหมดเวลาเพื่อป้องกันไม่ให้การทดสอบใช้เวลานานเกินไป - ในการเปลี่ยนแปลงที่รุนแรงคำเตือนเกี่ยวกับองค์ประกอบที่ไม่รู้จักในขณะนี้จะถูกบันทึกเป็นข้อผิดพลาด แม้ว่าแอปนี้จะไม่ทำให้แอปเสียหาย แต่ก็อาจทำให้เครื่องมือที่คาดว่าจะไม่มีการบันทึกผ่าน console.error
- ในการเปลี่ยนแปลงครั้งใหญ่อีกครั้งตัวแก้ไขใด ๆ ที่ส่งกลับมา
EMPTY
จะยกเลิกการนำทาง เพื่อให้การนำทางดำเนินต่อไปได้นักพัฒนาต้องอัปเดตตัวแก้ไขเพื่ออัปเดตค่าบางอย่างเช่นdefault!Empty
. - การเพิ่มข้อมูลการอ้างอิงและตัวเลือกเนื้อหา ng ลงในข้อมูลเมตา คุณลักษณะคอมไพเลอร์ที่นำเสนอนี้จะให้ข้อมูลเมตาเพิ่มเติมที่เป็นประโยชน์สำหรับเครื่องมือเช่น Angular Language Service ซึ่งให้ความสามารถในการให้คำแนะนำสำหรับคำสั่ง / ส่วนประกอบที่กำหนดไว้ในไลบรารี
- การปรับปรุงประสิทธิภาพทำได้โดยการลดขนาดของรายการจุดเข้าและเทคนิคการแคชในรายการ นอกจากนี้การแคชการอ้างอิงจะทำในรายการจุดเข้าใช้งานและอ่านจากที่นั่นแทนที่จะคำนวณทุกครั้ง ก่อนหน้านี้แม้ว่าจุดเข้าไม่จำเป็นต้องมีการประมวลผล แต่ ngcc (คอมไพเลอร์ความเข้ากันได้ของ Angular Ivy) จะแยกวิเคราะห์ไฟล์ของจุดเข้าใช้เพื่อคำนวณการอ้างอิงซึ่งจะใช้เวลามากสำหรับโมดูล large_node
- ในการปรับปรุงประสิทธิภาพ ngcc ตอนนี้อนุญาตให้รายงานไฟล์ล็อกเก่าได้ทันที นอกจากนี้สำเนาแคชของไฟล์ tsconfig ที่แยกวิเคราะห์แล้วจะถูกเก็บไว้ซึ่งสามารถนำมาใช้ซ้ำได้หากเส้นทาง tsconfig เหมือนกัน
- ในการเปลี่ยนแปลงที่ไม่สมบูรณ์ตรรกะได้รับการอัปเดตเกี่ยวกับช่วงเวลาการจัดรูปแบบวันที่ข้ามเที่ยงคืน เมื่อจัดรูปแบบเวลาด้วยรหัส
b
หรือB
รูปแบบสตริงที่แสดงผลไม่สามารถจัดการช่วงเวลาของวันที่ครอบคลุมวันได้อย่างเหมาะสม แต่ตรรกะกลับไปสู่กรณีเริ่มต้นของAM
. ตรรกะนี้ได้รับการอัปเดตเพื่อให้ตรงกับเวลาภายในช่วงเวลาหนึ่งวันที่ยืดออกไปเลยเที่ยงคืนดังนั้นตอนนี้จะแสดงผลลัพธ์ที่ถูกต้องเช่นat night
ในกรณีของภาษาอังกฤษ การประยุกต์ใช้อย่างใดอย่างหนึ่งformatDate()
หรือDatePipe
หรือb
และB
โค้ดรูปแบบจะได้รับผลกระทบจากการเปลี่ยนแปลงนี้ - สำหรับเราเตอร์
CanLoad
ตอนนี้ยามสามารถกลับมาUrltree
ได้แล้วCanLoad
ยามกลับUrltree
ยกเลิกนำทางในปัจจุบันและการเปลี่ยนเส้นทาง สิ่งนี้ตรงกับพฤติกรรมปัจจุบันที่มีให้กับCanActivate
ยามที่เพิ่มเข้ามาด้วย สิ่งนี้ไม่มีผลต่อการโหลดล่วงหน้าCanLoad
ยามบล็อกพรีโหลดใด ๆ เส้นทางใด ๆ ที่มีเครื่องCanLoad
ป้องกันจะไม่ถูกโหลดไว้ล่วงหน้าและเจ้าหน้าที่จะไม่ถูกดำเนินการเป็นส่วนหนึ่งของการโหลดล่วงหน้า - การแพร่กระจายของช่วงค่าที่ถูกต้องใน ExpressionBinding ของนิพจน์ microsyntax ไปยัง ParsedProperty ซึ่งจะเผยแพร่สแปนไปยังเทมเพลต AST (ทั้ง VE และ Ivy) ข้อเสนอนี้มีไว้สำหรับคอมไพเลอร์ด้วย
- ในการแก้ไขแกนหลักตรรกะจะถูกเพิ่มเข้าไปในการโยกย้ายคลาสที่ไม่ได้ตกแต่งเพื่อตกแต่งคลาสที่ได้รับมาของคลาสที่ไม่ได้รับการตกแต่งที่ใช้คุณสมบัติเชิงมุม
- ในการเปลี่ยนแปลงที่รุนแรงประเภทของ Urlmatcher จะแสดงว่าสามารถคืนค่า null ได้เสมอ
- สำหรับผู้ปฏิบัติงานบริการมีการแก้ไขสถานการณ์ที่มีโอกาสที่ผู้ปฏิบัติงานบริการจะไม่ลงทะเบียนเมื่อมีงานที่ทำงานเป็นเวลานานหรือการหมดเวลาที่เกิดขึ้นประจำ
- มีการแก้ไขข้อบกพร่องจำนวนมากรวมถึงคอมไพเลอร์ที่หลีกเลี่ยงนิพจน์ที่ไม่ได้กำหนดไว้ในอาร์เรย์ holey และแกนหลักจะหลีกเลี่ยงข้อผิดพลาดในการโอนย้ายเมื่อนำเข้าสัญลักษณ์ที่ไม่มีอยู่จริง นอกจากนี้ยังมีวิธีแก้ปัญหาในแกนหลักสำหรับข้อบกพร่องในการซับ Terser การแก้ไขข้อบกพร่องอื่นระบุโมดูลที่ได้รับผลกระทบจากการแทนที่ใน TestBed อย่างเหมาะสม
- Angular NPM ไม่มีข้อคิดเห็น jsdoc บางอย่างอีกต่อไปเพื่อสนับสนุนการเพิ่มประสิทธิภาพขั้นสูงของ Closure Compiler นี่คือการเปลี่ยนแปลงที่แตกหัก การสนับสนุน Closure Compiler ในแพ็กเกจได้รับการทดลองและใช้งานไม่ได้มาระยะหนึ่งแล้ว ใครก็ตามที่ใช้ Closure Compiler น่าจะดีกว่าที่จะบริโภคแพ็คเกจ Angular ที่สร้างจากแหล่งที่มาโดยตรงแทนที่จะใช้เวอร์ชันที่เผยแพร่บน NPM
--compilation_level=SIMPLE
ในฐานะที่เป็นวิธีแก้ปัญหาชั่วคราวผู้ใช้สามารถพิจารณาใช้สร้างท่อปัจจุบันของพวกเขาที่มีธงปิด แฟล็กนี้จะช่วยให้แน่ใจว่า build ไปป์ไลน์สร้างอาร์ติแฟกต์ที่สร้างได้และรันได้โดยมีต้นทุนของขนาดเพย์โหลดที่เพิ่มขึ้นเนื่องจากการเพิ่มประสิทธิภาพขั้นสูงถูกปิดใช้งาน