มีอะไรใหม่ใน 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 ไปป์ไลน์สร้างอาร์ติแฟกต์ที่สร้างได้และรันได้โดยมีต้นทุนของขนาดเพย์โหลดที่เพิ่มขึ้นเนื่องจากการเพิ่มประสิทธิภาพขั้นสูงถูกปิดใช้งาน