Angular

בפיתוח תוכנה, אנגולר (באנגלית: Angular, מכונה גם "") היא תוכנה חופשית וקוד פתוח המשמשת כתשתית תוכנה ליישומי רשת, ומבוססת על שפת TypeScript.<ref></ref> היא מתוחזקת על ידי גוגל ועל ידי קהילה רחבה של מפתחים. אנגולר נכתבה מאפס על ידי אותו צוות מפתחים בגוגל שפיתח את AngularJS , תשתית תוכנה ליישומי רשת שהתבססה על שפת JavaScript.

== רקע ==
התשתית מיועדת לפיתוח יישומי דף-יחיד, ופישוט הפיתוח והבדיקות של יישומים אלו, באמצעות תשתית תוכנה לארכיטקטורות צד לקוח כמו MVC או MVVM, יחד עם רכיבים בהם משתמשים בדרך כלל ביישומי אינטרנט עשירים.

== היסטוריה ==
=== שמות ===
השכתוב של "AngularJS" נקרא "Angular 2", אך זה גרם לבלבול בקרב מתכנתים. לשם בהירות, הצוות הודיע ששמות נפרדים ישמשו לכל אחד מהפריימוורקים, כאשר "AngularJS" מתייחס לגרסאות 1.X ואילו "Angular" בלי "JS" מתייחס לגרסאות 2 ומעלה.<ref></ref>

=== גרסה 2 ===
אנגולר 2.0 הוכרז בוועידת ng-Europe באוקטובר 2014.<ref></ref><ref></ref> השינויים הדרסטיים בגרסה זו עוררו מחלוקת בקרב קהילת המפתחים.<ref></ref>

ב-30 באפריל 2015, צוות הפיתוח של אנגולר הכריז שאנגולר 2 עברה מגרסת אלפא לגרסת תצוגה מקדימה למפתחים.<ref></ref> בדצמבר 2015 עברה הגרסה לבטא,<ref></ref> וגרסה מועמדת להפצה פורסמה במאי 2016.<ref></ref> הגרסה הסופית שוחררה ב-14 בספטמבר 2016.

=== גרסה 4 ===
ב-13 בדצמבר 2016 הוכרזה גרסה 4, על מספר 3 דילגו כדי למנוע בלבול סביב חוסר הסנכרון בין הגרסה של חבילת הניתוב שכבר הופצה כ-v3.3.0.<ref></ref> הגרסה הסופית יצאה ב-23 במרץ 2017.<ref></ref> אנגולר 4 היא בעלת תאימות לאחור לאנגולר 2.<ref></ref>

גרסה 4.3 היא גרסה משנית, מה שאומר שהיא לא מכילה שינויים שוברים ושהיא נועדה להחליף את הגרסאות שקדמו לה.

תכונות חדשות בגרסה 4.3:
* "HttpClient" - ספרייה קטנה יותר, קלה לשימוש ורבת יכולות לביצוע קריאות HTTP.
* ארבעה איוונטים חדשים במחזור חיי הניתוב: GuardsCheckStart, GuardsCheckEnd, ResolveStart, ResolveEnd.
* השבתה של הנפשות בהתאם לתנאים.

=== גרסה 5 ===
אנגולר 5 יצא ב-1 בנובמבר 2017.<ref></ref> שיפורים עיקריים באנגולר 5 כוללים תמיכה באפליקציות רשת פרוגרסיביות, אופטימייזר לבניית תוכנה ושיפורים הקשורים למטריאל דיזיין (שפת העיצוב המשתמשת את אנגולר).<ref></ref>

=== גרסה 6 ===
אנגולר 6 יצא ב-4 במאי 2018.<ref></ref> הגרסה מתמקדת פחות בשלד התוכנה עצמו ויותר בארגז הכלים הנלווה וביכולת לזוז מהר יותר בעתיד, ובכלל זה בכלים: ng update, ng add, Angular Elements, Angular Material + CDK, Angular Material Starter Components, CLI Workspaces, Library Support, Tree Shakable Providers, Animations Performance Improvements, ו-RxJS v6.

=== גרסה 7 ===
אנגולר 7 יצא ב-18 באוקטובר 2018 והכיל עדכונים הקשורים לביצועי האפליקציות, Angular Material + CDK, Virtual Scrolling, נגישות משופרת באלמנט לבחירה מרשימה, תמיכה בהקרנת תוכן (Content Projection), עדכוני תלויות עבור Typescript 3.1, RxJS 6.3, Node 10 (אך עדיין תומך ב-Node 8).<ref></ref>

=== גרסה 8 ===
אנגולר 8 יצא ב-28 במאי 2019 והכיל: טעינה דיפרנציאלית עבור כל הקוד של האפליקציה, ייבוא דינמי עבור נתיבים, וורקרים, תמיכה ב-TypeScript 3.4, וגרסת תצוגה מקדימה של מנוע הרינדור Angular Ivy, שמגיע כבוי בברירת מחדל. התצוגה המקדימה של Angular Ivy כללה:<ref name=":0"></ref>
* ייצור קוד שקל יותר לקרוא ולדבג בזמן ריצה
* קיצור זמן בנייה מחדש
* שיפור בנפח התעבורה
* בדיקה משופרת של טיפוסים בתבנית
* תאימות לאחור

=== גרסה 9 ===
אנגולר 9 יצא ב-6 בפברואר 2020. גרסה 9 מעבירה את כל האפליקציות לשימוש במנוע Ivy להידור והרצה בברירת מחדל. אנגולר עודכן לעבוד עם גרסאות 3.6 ו-3.7 של TypeScript. בנוסף למאות תיקוני באגים, מהדר Ivy מציע יתרונות רבים:
* חבילות קוד קטנות יותר
* הרצת בדיקות מהירה יותר
* ניפוי שגיאות מהיר יותר
* קישור משופר של קלאסים ועיצוב ב-CSS
* בדיקת טיפוסים משופרת
* שגיאות בנייה משופרות
* שיפור זמני בנייה, הפעלת בנייה לפני ריצה בברירת מחדל (Ahead of time - AOT)
* לוקליזציה משופרת

=== גרסה 10 ===
אנגולר 10 יצא ב-24 ביוני 2020.<ref></ref>

* וידג'ט חדש לבחירת טווח תאריכים (בספריית Material UI)
* אזהרות על ייבוא של CommonJS
* הגדרות אפשריות קשיחות יותר
* הגדרת תצורה חדשה לדפדפן ברירת מחדל
* הסרה של קוד ישן

=== גרסה 11 ===
אנגולר 11 יצא ב-11 בנובמבר 2020.<ref></ref>

=== גרסה 12 ===
אנגולר 12 יצא ב-12 במאי 2021.<ref></ref>

הופסקה התמיכה בדפדפן Internet Explorer 11.

=== גרסה 13 ===
גרסה 13 יצאה ב-4 בנובמבר 2021.<ref>
</ref>

=== גרסה 14 ===
גרסה 14 יצאה ב-2 ביוני 2022. בין התכונות החדשות: טפסים עם הגדרות טיפוסים, קומפוננטות עצמאיות.

=== גרסה 15 ===
גרסה 15 יצאה ב-16 בנובמבר 2022. בין התכונות החדשות: ממשקי API עצמאיים יציבים, המאפשרים למפתחי Angular לבנות אפליקציות ללא מודולי Ng. ניפוי באגים טוב יותר ושימוש חוזר בקוד. 

=== גרסה 16 ===
גרסה 16 יצאה ב-3 במאי 2023. היא כוללת תכונות חדשות כגון הידרציה חלקית לרינדור צד השרת (SSR) של Angular Universal, תמיכה ניסיונית ב-Jest, מערכת בנייה מבוססת בנייה לשרתי פיתוח, תמיכה בפרויקטים עצמאיים (standalone) שינוי של הLife-cycle, ללא צורך לרנדר את כל הדף מחדש במקרה של שינוי נקודתי.
יכולת פעולה הדדית טובה יותר עם RxJS, ועוד.

== דוגמה לתוכנית Angular ==
בקובץ ה-app.component.ts
<syntaxhighlight lang="javascript">
import { Component } from '@angular/core';

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})

export class AppComponent {
 title = 'app works';
}

</syntaxhighlight>
ובקובץ ה-app.component.html
<syntaxhighlight lang="javascript">
 <div>
 <h1 class="color" *ngIf="title"></h1>
 <h1 class="color" *ngIf="!title">הכותרת אם המשתנה לא מוגדר</h1>
 </div>
</syntaxhighlight>
ובקובץ ה-app.component.css
<syntaxhighlight lang="javascript">
 .color{
 color: red;
 background-color: #eee;
 width: 100%;
 text-align: center;
 }
</syntaxhighlight>

== הבדלים בין Angular ו-AngularJS ==
גוגל תכננה את אנגולר כשכתוב מאפס של AngularJS.

* באנגולר לא קיים הרעיון של תחום הכרזה או קונטרולרים; תחת זאת הוא עושה שימוש בהיררכיה של קומפוננטות כמאפיין הארכיטקטוני העיקרי שלו.<ref></ref>
* באנגולר יש תחביר שונה, סוגריים רבועים <code>"[ ]"</code> משמשים לקישור משתנים, <code>"( )"</code> משמש להאזנה לאירועים.<ref></ref>
* מודולריות - הרבה מהפונקציונליות העיקרית עברה למודולים.
* אנגולר מתעדפת שימוש בשפת התכנות TypeScript, שכוללת את התכונות הבאות:
** מערכת טיפוסים סטטית, כולל תמיכה בתכנות גנרי.
** סימון טיפוסים על ידי הוספת תו : (נקודתיים) ולאחריו שם הטיפוס.
* טעינה דינמית.
* הידור תבניות אסינכרוני.
* קולבקים איטרטיביים באמצעות RxJS.
* תמיכה בהרצת אפליקציות אנגולר בשרתים.

== ראו גם ==
* AngularJS 
* MVC
* JSON
* Backbone.js 
* jQuery
* MEAN (תשתיות תוכנה)
* React

== קישורים חיצוניים ==

* 

==הערות שוליים==

קטגוריה:פיתוח יישומי ווב
קטגוריה:תוכנה חופשית
קטגוריה:גוגל: תוכנה
קטגוריה:JavaScript
קטגוריה:ספריות תוכנה