מה חדש ב- Angular 10.1

Angular 10.1.0, מהדורת נקודת המשך ל- Angular 10, פורסמה ב -2 בספטמבר, והביאה לשיפור ביצועים למהדר ולנתב יחד עם כלי חילוץ הודעות חדש. 

Angular 10 זמין בדרך כלל במהדורת הפקה ב- 24 ביוני. השדרוג הגדול למסגרת מבוססת TypeScript שפותחה על ידי Google שם דגש רב יותר על שיפורים באיכות, בכלים ובמערכות אקולוגיות מאשר בתכונות חדשות.

Angular 10 קטן מגרסאות קודמות של Angular. יכולות חדשות כוללות בורר טווחי תאריכים חדש בספריית רכיבי ממשק המשתמש של Angular Material ואזהרות לייבוא ​​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.
  • תובנה נוספת מתווספת לאבחון המיוצר לשגיאות הערכה סטטיות.
  • נוספה אפשרות לתמיכה מוחלטת ב- HTTP.
  • תוסף TypeScript 4.0 נוסף למהדר.
  • canparse() האבחנה נחשפת.
  • שיפורים בביצועים נעשו בנתב, הטפסים, המהדר CLI וכלי התאימות של המהדר ngcc.
  • שינוי של ווים במחזור החיים יכול להיעשות בכל עת לפני אתחול האתחול.
  • מספר תיקונים גדולים מוצעים לליבה, לנתב ולחלקים אחרים של Angular.

תכונות חדשות ב- Angular 10

התכונות העיקריות של Angular 10 כוללות את הדברים הבאים:

  • TSlib, ספריית זמן הריצה עבור פונקציות עוזר המכילות TypeScript, עודכנה ל- TSlib 2.0. הכלי לניתוח סטטי TSLint עבור TypeScript עודכן ל- TSLint 6.
  • נוסף ממשק מהדר שעוטף את מהדר ה- ngtsc בפועל. המהדר הספציפי לשירות השפה מנהל קבצי בדיקת טיפים מרובים באמצעות ממשק הפרויקט, ויוצר סקריפט אינפוזים לפי הצורך.
  • תצורת הדפדפן לפרויקטים חדשים עודכנה כדי לא לכלול דפדפנים ישנים ופחות בשימוש. התמיכה הושבתה עבור Internet Explorer 9, Internet Explorer 10 ו- Internet Explorer Mobile.
  • פורמט החבילה הזוויתית כבר אינו כולל חבילות ESM5 או FESM5, מה שחוסך זמן הורדה והתקנה בזמן הפעלה yarnאו npm installעבור חבילות וספריות Angular.
  • עבור המהדר נוספו טווחי שם לקריאות נכסים ושיחות שיטות.
  • EntryPointFinder, מתווך נקודת כניסה מבוסס תוכנה, נוסף שניתן לזרוע מהיבוא בתוכנית שצוינה על ידי קובץ tsjconfig.json. זה צפוי להיות מהיר יותר מאשר DirectoryWalkerEntryPointFinderכאשר התוכנית הפעילה מייבאת רק חלק קטן מנקודות הכניסה המותקנות. 
  • השלמה אוטומטית מוסרת מיישויות HTML, כגון &בגלל ערך מפוקפק ובעיית ביצועים.
  • מיפוי מפורש נחשף מסגירה לקבצי devmode. תכונה זו מכוונת לכלי פיתוח שעליהם לתרגם תשומות לבניית ייצור למקבילות devmode שלהם.
  • בשינוי שבור, הגנריות הוחלה ModuleWithProviders. נדרש פרמטר מסוג גנרי ModuleWithProvidersכדי שהתבנית תעבוד עם צינור ההידור והעיבוד של אייבי, אך לפני התחייבות זו, View Engine אפשרה להשמיט את הסוג הגנרי. אם מפתח משתמש ModuleWithProvidersללא סוג כללי, העברת גרסה 10 תעדכן את הקוד. אך אם מפתח משתמש ב- View Engine ובהתאם לספריה שמשמיטת את הסוג הגנרי, תונפק שגיאת build. במקרה זה, ngcc לא יעזור וההעברה תכסה רק את קוד היישום. יש ליצור קשר עם מחבר הספרייה כדי לתקן את הספרייה שלו. כפתרון דרך, ניתן להגדיר את skipLibChecks כ- false ב- tsconfig או לעדכן אפליקציה לשימוש בקיסוס בלבד.
  • TypeScript 3.9 מוצג כעת, עם תמיכה ב- TypeScript 3.8 שהוסרה. זהו שינוי שבור. TypeScript 3.6 ו- TypeScript 3.7 גם אינם נתמכים עוד.
  • שיפורי ביצועים של בדיקת סוג נעשו ב- compiler-cli.
  • כדי לשפר את הביצועים, החישוב basePathsנעשה עצלן, ולכן העבודה נעשית רק במידת הצורך TargetedEntryPointFinder. בעבר, basePaths הוא מחושב בכל פעם שהמאתר היה מיידי, וזה היה בזבוז מאמץ במקרה בו נקודת הכניסה הממוקדת כבר עובדה.
  • מיזוג של קבצי תרגום מרובים נתמך. בעבר הותר קובץ תרגום אחד בלבד לאזור. כעת משתמשים יכולים לציין מספר קבצים בכל אזור, והעסקאות מכל קובץ ימוזגו על ידי מזהה העברת הודעות.
  • ניתן להגדיר פסק זמן לנעילת Async. זה מוסיף תמיכה בקובץ ngcc.config.js להגדרת  האפשרויות retryAttemptsוה- retryDelayAsyncLocker. מבחן אינטגרציה מוסיף בדיקה חדשה לפסק זמן ומשתמש ב- ngcc.config.js כדי לצמצם את זמן הפסק זמן כדי למנוע את זמן הבדיקה.
  • בשינוי שבור, אזהרות לגבי אלמנטים לא ידועים נרשמות כעת כשגיאות. אמנם זה לא ישבור אפליקציה, אך היא עשויה להכשיל כלים שלא מצפים שיירשם באמצעות console.error. 
  • בשינוי שבור אחר, כל פותר שיחזור EMPTYיבטל את הניווט. כדי לאפשר המשך הניווט, על המפתחים לעדכן את הרזולרים כדי לעדכן ערך כלשהו, ​​כגון default!Empty.
  • תוספת מידע על תלות ובוחרי תוכן ng למטא נתונים. תכונת מהדר מוצעת זו תספק מטא-נתונים נוספים שימושיים לכלים כגון שירות שפה זוויתית, ותציע יכולת לספק הצעות להוראות / רכיבים המוגדרים בספריות.
  • שיפורי ביצועים, שהושגו על ידי הקטנת גודל המניפסט כניסה וטכניקת המטמון במניפסט. בנוסף, אחסון במטמון של תלות נעשה במניפסט הכניסה ונקרא משם ולא מחושב בכל פעם. בעבר, גם אם נקודת כניסה לא הייתה זקוקה לעיבוד, ngcc (מהדר תאימות Angular Ivy) ינתח את הקבצים של נקודת הכניסה לצורך חישוב תלות, מה שייקח זמן רב למודולים גדולים.
  • כדי לשפר את ביצועי ה- ngcc, מותר כעת דיווח מיידי על קובץ נעילה מעופש. בנוסף, מאוחסן עותק במטמון של קובץ tsconfig המנותח שניתן לעשות בו שימוש חוזר אם נתיב tsconfig זהה.
  • בשינוי שבור, עודכן ההיגיון בכל הקשור לעיצוב תקופות יום שחוצות חצות. בעת עיצוב זמן עם קוד bאו עיצוב B, המחרוזת שניתנה לא טיפלה כראוי בתקופות יום המשתרעות על פני ימים. במקום זאת, ההיגיון חזר למקרה המוגדר כברירת מחדל AM. לוגיקה זו עודכנה כך שהיא תואמת זמנים בתוך תקופת יום המשתרעת אחרי חצות, ולכן כעת היא תניב פלט נכון, כמו at nightבמקרה של אנגלית. יישומים באף formatDate()או DatePipeאו bו  Bקודי פורמט יושפעו משינוי זה.
  • עבור הנתב, CanLoadהשומר יכול כעת לחזור Urltree. CanLoadשומר שחוזר Urltreeמבטל ניווט ופניות נוכחיים. זה תואם את ההתנהגות הנוכחית הזמינה CanActivateלשומרים שנוספה גם כן. זה לא משפיע על הטעינה מראש. CanLoadבלוקים משמרים בכל טעינה מראש; כל מסלול עם CanLoadשומר לא יוטען מראש והשומרים לא יבוצעו כחלק מהטעינה מראש.
  • התפשטות טווח הערכים הנכון בביטוי כריכה של ביטוי מיקרוסינטקס ל- ParsedProperty, שבתורו תפיץ את הטווח לתבניות ה- AST (הן VE והן Ivy). הצעה זו מיועדת גם למהדר.
  • בתיקון לליבה, הלוגיקה תתווסף להעברת מחלקה לא מקושטת כדי לקשט מחלקות נגזרות של מחלקות לא מקושטות המשתמשות בתכונות זוויתיות.
  • בשינוי שבור, הסוג של Urlmatcher ישקף שהוא תמיד יכול להחזיר אפס.
  • עבור עובד השירות, נקבע תיקון למצב בו היה סיכוי שעובד השירות לעולם לא יירשם כשיש משימה ארוכת טווח או פסק זמן חוזר.
  • מספר תיקוני באגים בוצעו, כולל המהדר שנמנע מביטויים לא מוגדרים במערך חור והליבה המונעת שגיאת העברה כאשר מייבא סמל שאינו קיים. יש גם דרך לעקיפת הבעיה של הבאג של Terser. תיקון באגים נוסף מזהה כראוי מודולים המושפעים מעקיפות ב- TestBed.
  • NPM Angular כבר לא מכיל הערות jsdoc מסוימות לתמיכה באופטימיזציות המתקדמות של מהדר הסגירה. זהו שינוי שבור. התמיכה ב- Composer Closer בחבילות הייתה ניסיונית ונשברה כבר זמן מה. מי שמשתמש ב- Closer Compiler עדיף לצרוך חבילות Angular שנבנו ממקורות באופן ישיר ולא לצרוך גרסאות שפורסמו ב- NPM. כפתרון זמני, משתמשים יכולים לשקול להשתמש בצינור הבנייה הנוכחי שלהם עם דגל סגירה --compilation_level=SIMPLE. דגל זה יבטיח כי צינור הבנייה מייצר חפצים ניתנים לבנייה, הניתנים לבנייה, בעלות של הגדלת גודל המטען עקב השבתת אופטימיזציות מתקדמות.