שלום עולם Angular

מחבר:
בתאריך:

Angular היא פריימוורק שמיועד לרוץ בצד הלקוח של אתרי אינטרנט. המערכת מפותחת על ידי Google, והיא מחליפה את AngularJS.

הלוגו של Angular

Angular נכתבה מהיסוד, והיא שונה מאוד מ-AngularJS, ומציעה שיפור ניכר בביצועים, ותמיכה טובה יותר בניידים. אחד השינויים המרכזיים הוא שאת הקוד אנחנו כותבים בשפת ה-TypeScript, ולא ב-JavaScript. אתם מוזמנים ללמוד TypeScript מהמדריכים באתר רשתטק.

קיימת גרסה אנגלית למדריך How to install Angular.

 

הכנת סביבת העבודה ל Angular

סביבת העבודה כוללת:

  1. כלי שורת פקודות או טרמינל (אם אתם בסביבת linux או Mac אין בעיה, ועל סביבת חלונות כדאי להתקין את git bash).
  2. IDE או עורך קוד טוב (אני עובד עם Atom, ומי שרוצה IDE מקצועי בתשלום יכול לנסות את Webstorm).
  3. התקנה של הגרסה החדישה ביותר של node.js

את node.js נוריד ונתקין מהכתובת https://nodejs.org/en/download

node.js יורד ביחד עם מתקין החבילות npm, שבו ניעזר כדי להתקין את Angular, ואת יתר החבילות שבהם תלוי הפרויקט שלנו.

נפתח את כלי שורת הפקודות, ונתקין את ה-ׁ(CLI (command line interface באופן גלובלי באמצעות הפקודה הבאה.

> npm install -g @angular/cli

ההתקנה עשויה לארוך מספר דקות

אחרי שה-CLI יותקן על המחשב שלנו, ננווט לתיקייה שבה אנחנו מעוניינים ליצור את הפרויקט, וניצור את האפליקציה בתוך התיקייה (לאפליקציה במדריך אני קורא hello-world).

> ng new hello-world

אחרי שיצרנו את האפליקציה, נכנס לתיקיית הפרויקט, ונשתמש בפקודה serve כדי להפעיל את השרת.

> cd hello-world
> ng serve

הפקודה serve מריצה את השרת וגם מקמפלת את קבצי ה-TypeScript ל-JavaScript. דבר מאוד חשוב מפני שדפדפנים יודעים להריץ JavaScript, ולא TypeScript.

אחרי שהתהליך יסתיים, ננווט משורת הכתובות בדפדפן, ל-localhost:4200, כדי לצפות באפליקציה שלנו בפעולה. והתוצאה לפניכם:

התוצאה על הדפדפן של הקוד שהרצנו בפעם הראשונה באפליקציית Angular2

 

מבנה הקבצים והתיקיות של הפרויקט

נשתמש ב-IDE כדי לפתוח את תיקיית הפרויקט, וננווט לתיקייה src, שהיא התיקייה שבה נמצאים קבצי ה-TypeScript, ובתוכה נמצאים רוב הקבצים שדרושים לנו לפיתוח הפרויקט.

זה מבנה התיקיות שאתם אמורים לראות באפליקציה:

מבנה התיקיות והקבצים באפליקציית Angular

הקבצים הכלליים שאותם צריך להכיר יושבים בתיקייה src

  • src/index.html
    הוא קובץ ההטמ"ל המרכזי שמשותף לכל מרכיבי האפליקציה.
  • src/styles.css
    הוא קובץ ה- CSS המשותף לכל מרכיבי האפליקציה.

האפליקציה מתחלקת למרכיבים שמכונים קומפננטות (component) ובשלב זה יש לנו קומפננטה אחת שכל הקבצים שלה נמצאים בתיקייה src/app.

הקומפוננטה הזו היא הרכיב המרכזי באפליקציה, וכל יתר הקומפוננטות משובצות לתוכה, באופן ישיר או עקיף.

אילו הקבצים שהכי חשוב להכיר בתיקייה src/app , שכאמור, מכילה את הקומפננטה המרכזית של האפליקציה.

  • src/app/app.module.ts
    הוא המודול המרכזי האפליקציה, ובתוכו נגדיר את המודולים והקומפננטות בהם נשתמש.
  • src/app/app.component.ts
    מכיל את הקוד עבור הקומפוננטה המרכזית של האפליקציה.
  • src/app/app.component.html
    בתוכו ימצא ה-html של כל האפליקציה מכיוון שלתוכו נשבץ את ה-html של יתר הקומפננטות בצורת תגיות שייצגו את הקומפננטות השונות.

 

נערוך את הקוד

נפתח לעריכה את הקובץ app.component.ts, שזה תוכנו.

src/app/app.component.ts
---------------------------------

import { Component } from '@angular/core';

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

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

מה שלנו חשוב בשלב זה של הלימוד זה שבשורה השנייה הדקורטור Component (ואם אתם לא יודעים מזה דקורטור אתם יכולים לקרוא לו רק "Component" הוא לא ייעלב) מגדיר את קבצי ה-html וה-css של הקומפננטה.

ובהמשך הקובץ, יש לנו מחלקה ששמה AppComponent שמכילה את הקוד שמוצג בהטמ"ל. ובשלב זה היא מכילה שדה אחד, השדה title.

אבל איפה קובץ ההטמ"ל שבתוכו מוצג השדה title?

נפתח את קובץ ההטמ"ל שמוגדר ב-Component@, ונמצא בו את הקוד הבא.

src/app/app.component.html
------------------------------------

<h1>
    {{title}}
</h1>

השדה title מהמחלקה AppComponent מרונדר לתוך הסוגריים המסולסלים.

נבדוק שזה אכן כך על ידי שינוי הערך המוצב לתוך השדה title במחלקה AppComponent.

src/app/app.component.ts
------------------------------------

import { Component } from '@angular/core';

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

export class AppComponent {
    title = 'Hello world with Angular2!';
}

ועכשיו, כשנחזור לדפדפן, נראה את השינוי. כך זה נראה אצלי:

התוצאה על הדפדפן של הקוד שהרצנו בפעם הראשונה באפליקציית Angular2

 

שימו לב, שהשינוי הוא מיידי, בלי צורך לקמפל את קוד ה-TypeScript, בגלל שהאפליקציה עושה את הקומפילציה באופן אוטומטי בכל פעם שאנחנו שומרים את הקבצים.

 

הוספת קומפננטות באמצעות ה-cli

קומפננטות (component) הם הדרך העיקרית באנגולר להוסיף אלמנטים ולוגיקה לדפים.

ניצור את הקומפננטה הראשונה באמצעות ה-cli, ונקרא לה my-component

> ng generate component my-component

ה-cli יוסיף תיקייה לאפליקציה לפי שם הקומפוננטה: src/app/my-component. התיקייה תכלול 4 קבצים:

  • my-component.component.ts יכיל את הלוגיקה של הקומפוננטה.
  • my-component.component.html יכיל את ה-html.
  • my-component.component.css קובץ ה-css שמשרת את האפליקציה.
  • my-component.component.spec.ts הוא קובץ הבדיקות.

את הלוגיקה נכתוב בקובץ my-component.component.ts

/src/app/my-component/my-component.component.ts
----------------------------------------

import { Component, OnInit, ViewEncapsulation } from '@angular/core';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class MyComponentComponent implements OnInit {

  name: string;
	
  constructor() {
    this.name = 'Israel Israeli';
  }
	
  sayHello() {
    console.log('Hello, '+ this.name)
  }

}
  • המשתנה name יאוכלס בערך בזמן יצירת הקומפוננטה על ידי ה-constructor וקריאה לפונקציה sayHello() תציג בקונסולה של המפתחים את ההודעה.
  • שימו לב לסלקטור של הקומפננטה 'app-my-component' כי אנחנו נשתמש בו בהמשך כדי לשבץ את הקומפננטה בקובץ ה-html הראשי של האפליקציה.

נערוך את קובץ ה-html של הקומפננטה ונוסיף כפתור שלחיצה עליו תקרא לפונקציה.

/src/app/my-component/my-component.component.html
----------------------------------------

<p>
  <button (click)="sayHello()">Say Hello to {{name}}</button>
</p>

כדי לשלב את הקומפוננטה באפליקציה צריך לייבא אותה לקובץ המודל של האפליקציה.

/src/app/app.module.ts
----------------------------------------

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { MyComponentComponent } from './my-component/my-component.component';

@NgModule({
  declarations: [
    AppComponent,
    MyComponentComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
  • חשוב לייבא את הקומפוננטה וגם להוסיף אותה ל-declerations.
  • אם השתמשנו ב-cli כדי להוסיף את הקומפננטה היא תעשה את העבודה בשבילנו.

וכדי לצפות בקומפוננטה נשבץ את הסלקטור שלה בקובץ ה-html של האפליקציה. כך זה נראה בקוד:

src/app/app.component.html
----------------------------------------

<h1>
{{title}}
</h1>

<app-my-component></app-my-component>

וכך זה נראה בפעולה. לחיצה על הכפתור, תדפיס את ההודעה לקונסולה.

קוד הקומפננטה האנגולרית הפשוטה שפתחנו במדריך בפעולה

 

במדריך הבא נלמד להוסיף את הקומפננטות ידנית ללא ה-CLI וגם כיצד לקנן (=לשים בתוך) קומפננטה אחת בתוך אחרת

למדריכים נוספים בסדרת האנגולר

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

הוסף תגובה חדשה

 

= 9 + 2

תמונת המגיב

עודד בתאריך: 04.03.2017

מדריך מעולה כרגיל. מחכה למדריכים הבאים.

תמונת המגיב

יוסי בן הרוש בתאריך: 04.03.2017

תודה רבה, עודד

תמונת המגיב

אנחנו בתאריך: 22.05.2018

מעולה ברור בצורה יוצאת דופן

תמונת המגיב

שני בתאריך: 19.06.2018

מדריך מצויין, ברור ומוסבר היטב! תודה רבה!

תמונת המגיב

בתת בתאריך: 27.06.2018

ממש ברור!! וכיף לעבוד איתו

תמונת המגיב

אנונימי בתאריך: 09.10.2018

רציתי להגיד שאני נהנה מההסבר על אנגולר אני התחלתי ללמוד באיזה מכללה אנגולר וההסבר הזה עושה לי הרבה סדר בראש. רציתי להגיד שנראה לי בכמה מקומות יש שם טעות כגון בפלט של ה title או במה שכתוב על ה button וכן ב path הוספתי כמה תמונות. כתבתי לך מייל. אבל בסך הכל ההסבר מובן ממש נהנה תודה.

תמונת המגיב

יוסי בן הרוש בתאריך: 09.10.2018

תודה, חבר. אתה צודק. עשית שירות טוב לקהילה. בהצלחה עם הקורס.

תמונת המגיב

תמי בתאריך: 05.11.2018

מוצלח ביותר!!!!!!!!!!!!!!!!!!

תמונת המגיב

אייל מונסונגו בתאריך: 26.11.2018

אחלה תודה רבה אין עליך!!!!!!!!

תמונת המגיב

עטרה בתאריך: 04.12.2018

מדריך מצויין מסביר בצורה יסודית וברורה מאוד!