Kurs Angular · Moduł 1: Wprowadzenie do Angulara
Czym jest Angular?
W tej lekcji3
Witaj w Akademii Samurajów Kodu! Jestem Mistrz Ango-san i będę Twoim przewodnikiem na ścieżce Angulara. Tak jak młody samuraj musi poznać historię swojego klanu, tak Ty musisz poznać pochodzenie frameworka, który opanujesz.
Historia Angulara - Od AngularJS do Angular 19
Angular to potężny framework stworzony przez Google, a jego historia jest fascynująca jak opowieści o legendarnych wojownikach.
Era AngularJS (2010-2016)
W 2010 roku narodził się AngularJS (Angular 1.x) - jeden z pierwszych frameworków, które zrewolucjonizowały tworzenie aplikacji webowych. Spopularyzował w przeglądarce takie koncepcje jak dwukierunkowe wiązanie danych (two-way data binding) i wstrzykiwanie zależności (dependency injection).
Narodziny Angular 2+ (2016)
W 2016 roku Google przepisał framework od zera, tworząc Angular 2. To było jak przejście od drewnianego miecza do katany - zupełnie nowe narzędzie, zbudowane na TypeScripcie.
Angular dzisiaj (v19+)
Dziś Angular (w tym kursie wersja 19 i nowsze) to dojrzały, "opinionated" framework z:
- Standalone Components - niezależni wojownicy, bez potrzeby modułów
- Signals - system reaktywności (od Angular 16, stabilny od 17), jak sygnały dymne między zamkami
- Zoneless - przyszłość bez Zone.js dla lepszej wydajności
Filozofia Angulara - Kodeks Bushido Frameworka
Angular jest "opinionated" - ma jasno określone zasady i strukturę, podobnie jak kodeks Bushido dla samurajów.
Zasady Angulara:
- Struktura - każdy projekt ma określoną organizację
- TypeScript - typowanie to dyscyplina i precyzja
- Dependency Injection - system zaopatrzenia wojowników
- Komponenty - podstawowa jednostka jak pojedynczy samuraj
// Pierwszy komponent Angular - prosty jak powitanie w dojo
import { Component } from '@angular/core';
@Component({
selector: 'app-dojo',
standalone: true,
template: `
<div class="dojo">
<h1>道場 Dojo Kodu</h1>
<p>Witaj, młody wojowniku: {{ imie }}</p>
</div>
`
})
export class DojoComponent {
imie = 'Uczniu';
}Angular vs Inne Frameworki
| Cecha | Angular | React | Vue |
|---|---|---|---|
| Typ | Framework kompletny | Biblioteka | Framework progresywny |
| Język | TypeScript (wymagany) | JavaScript/TypeScript | JavaScript/TypeScript |
| Struktura | Ścisła (opinionated) | Elastyczna | Elastyczna |
| Krzywa uczenia | Stroma | Średnia | Łagodna |
| Najlepszy dla | Aplikacje korporacyjne, duże projekty | UI, elastyczność | Prototypy, średnie projekty |
Angular jest jak tradycyjne szkolenie samurajskie - wymaga dyscypliny i czasu, ale daje solidne fundamenty na całe życie programisty.
Kod do tej lekcji: src/app/app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
standalone: true,
template: `
<div class="dojo">
<header class="dojo-header">
<h1>Akademia Samurajów Kodu</h1>
<p class="subtitle">道場 Dojo Angular - Moduł 1</p>
</header>
<main class="dojo-content">
<section class="welcome-panel">
<h2>Witaj, Młody Wojowniku!</h2>
<p>
To jest Twój pierwszy komponent Angular w naszym Dojo.
Stworzyliśmy go jako Standalone Component - niezależnego wojownika.
</p>
<p>
<strong>Mistrz Ango-san:</strong> "Każda wielka podróż zaczyna się od pierwszego kroku.
Twoja droga samuraja kodu właśnie się rozpoczęła!"
</p>
</section>
<section class="info-panel">
<h3>Czym jest Angular?</h3>
<ul>
<li>Framework od Google</li>
<li>TypeScript jako fundament</li>
<li>Standalone Components</li>
<li>Signals - nowa reaktywność</li>
</ul>
</section>
<section class="counter-demo">
<h3>Licznik Treningów</h3>
<div class="counter">
<button (click)="decrementTraining()" class="btn">-</button>
<span class="training-display">Treningi: {{ trainingCount }}</span>
<button (click)="incrementTraining()" class="btn">+</button>
</div>
<p class="status" [class]="getStatusClass()">
Status: {{ getStatusText() }}
</p>
</section>
</main>
<footer class="dojo-footer">
<p>道場 Dojo Kodu © 2024 - Droga Samuraja Angular</p>
</footer>
</div>
`,
styles: [`
.dojo {
font-family: 'Segoe UI', sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
min-height: 100vh;
color: #eee;
}
.dojo-header {
text-align: center;
padding: 20px;
border-bottom: 2px solid #c9a227;
}
.dojo-header h1 {
color: #c9a227;
margin: 0;
font-size: 2rem;
}
.subtitle {
color: #888;
font-style: italic;
}
.dojo-content {
padding: 20px 0;
}
.welcome-panel, .info-panel, .counter-demo {
background: rgba(255,255,255,0.05);
border: 1px solid #c9a227;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
}
h2, h3 {
color: #c9a227;
}
ul {
list-style: none;
padding-left: 0;
}
.counter {
display: flex;
align-items: center;
justify-content: center;
gap: 20px;
margin: 20px 0;
}
.btn {
background: #c9a227;
color: #1a1a2e;
border: none;
width: 40px;
height: 40px;
font-size: 1.5rem;
border-radius: 50%;
cursor: pointer;
transition: transform 0.2s;
}
.btn:hover {
transform: scale(1.1);
}
.training-display {
font-size: 1.5rem;
min-width: 150px;
text-align: center;
}
.status {
text-align: center;
padding: 10px;
border-radius: 4px;
}
.status.beginner { background: #4a5568; }
.status.intermediate { background: #2d6a4f; }
.status.advanced { background: #7c3aed; }
.status.master { background: #c9a227; color: #1a1a2e; }
.dojo-footer {
text-align: center;
padding: 20px;
border-top: 1px solid #333;
color: #666;
}
`]
})
export class AppComponent {
trainingCount = 0;
incrementTraining(): void {
this.trainingCount++;
}
decrementTraining(): void {
if (this.trainingCount > 0) {
this.trainingCount--;
}
}
getStatusClass(): string {
if (this.trainingCount >= 100) return 'master';
if (this.trainingCount >= 50) return 'advanced';
if (this.trainingCount >= 10) return 'intermediate';
return 'beginner';
}
getStatusText(): string {
if (this.trainingCount >= 100) return 'Mistrz!';
if (this.trainingCount >= 50) return 'Zaawansowany';
if (this.trainingCount >= 10) return 'Średniozaawansowany';
return 'Początkujący';
}
}Widzisz błąd w tej lekcji?
Sprawdź się
Odpowiedz na pytania z tej lekcji. Wybierz odpowiedź, a od razu zobaczysz, czy jest poprawna.
1. W którym roku wydano Angular 2 (przepisany od zera na TypeScript)?
2. Która firma stworzyła i rozwija framework Angular?
3. Co oznacza, że Angular jest frameworkiem 'opinionated'?
4. Który z poniższych jest nowym systemem reaktywności Angulara?
Zadania praktyczne w grze
- Układanie w poziomie
Ułóż w jednej linii poprawny import dekoratora Component z biblioteki Angulara:
- Klikanie w kolejności
Kliknij po kolei, aby zbudować początek dekoratora komponentu: @Component({})