We take developers from good to great
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/5646146/Screen_Shot_2019-01-05_at_1.59.35_PM.png)
WE ARE THE JSLEAGUE
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/5646147/logo-slim-white.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/5693487/insta-imgs-vue-03.png)
Intro to Vue.js
26-27th January
Dovelopers Office
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
Whoami
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/3576661/10842292_821353757958028_4788304970537894345_o.jpg)
Andrei Antal
@andrei_antal
- frontend engineer, since i can remember
- web & JS technologies enthusiast
- perpetual learner
Frontend Developer, ThisDot Labs
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/3945659/logo-01.png)
organizer for ngBucharest
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/3945743/download-1.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/4325248/download.png)
@ngBucharest
groups/angularjs.bucharest
Contents
1. Components
1.1 Component architecture
1.2 Bindings & render flow
1.3 Component communication
2. Directives and pipes
3. Services
4. RxJS and Observables
5. HTTP
6. Routing
7. Forms
8. Tooling and conclusions
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
1 App, 3 Frameworks - Angular
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
stuff here
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
Components
Module 1
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
Component architecture
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
Anatomy of a component
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/6150974/pasted-from-clipboard.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
import { Component } from '@angular/core';
@Component({
selector: 'app-component',
template: '<h1> Hello, world! </h1>',
})
export class AppComponent {
name = 'Andrei';
logGreet() {
console.log(`Hello ${ this.name }`);
}
}
A basic component
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
![](https://s3.amazonaws.com/media-p.slid.es/uploads/248920/images/6150997/pasted-from-clipboard.png)
<div>
<app-component></app-component>
</div>
<div>
<h1> Hello, world! </h1>
</div>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
@Component({
selector: 'app-component',
template: '<h1> Hello, world! </h1>',
})
<div>
<app-component></app-component>
<app-component></app-component>
<app-component></app-component>
</div>
<div>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
</div>
<div>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
</div>
@Component({
selector: 'app-component',
template: '<h1> Hello, Andrei! </h1>',
})
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
@Component({
selector: 'app-component',
template: '<h1> Hello, world! </h1>',
})
<div>
<app-component></app-component>
<app-component></app-component>
<app-component></app-component>
</div>
<div>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
</div>
<div>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
</div>
@Component({
selector: 'app-component',
template: '<h1> Hello, Andrei! </h1>',
})
Change once, reflect everywhere
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
@Component({
selector: 'app-component',
template: '<h1> Hello, world! </h1>',
})
<div>
<app-component></app-component>
<app-component></app-component>
<app-component></app-component>
</div>
<div>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
<h1> Hello, world! </h1>
</div>
<div>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
<h1> Hello, Andrei! </h1>
</div>
@Component({
selector: 'app-component',
template: '<h1> Hello, Andrei! </h1>',
})
Change once, reflect everywhere
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
import { Component } from '@angular/core';
@Component({
selector: 'app-component',
template: '<h1> Hello, {{ name }}! </h1>',
})
export class AppComponent {
name = 'Andrei';
logGreet() {
console.log(`Hello ${ this.name }`);
}
}
<h1>
Hello, Andrei!
</h1>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
The case for Angular
A basic component
import { Component } from '@angular/core';
@Component({
selector: 'app-component',
template: `
<h1> Hello, {{ name }}! </h1>
<button (click)="logGreet()">GREET</button>
`,
})
export class AppComponent {
name = 'Andrei';
logGreet() {
console.log(`Hello ${ this.name }`);
}
}
<h1> Hello, {{ name }}! </h1>
<button (click)="logGreet()">
GREET
</button>
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
Module title
Module 2
Module subtitle
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
Module 2
stuff here
Thank you!
email here
![](https://s3.amazonaws.com/media-p.slid.es/uploads/841906/images/4750295/logo-flat.png)
Voxxed Days Frontend Bucharest 2019 - 1 App, 3 Frameworks - Angular
By Andrei Antal
Voxxed Days Frontend Bucharest 2019 - 1 App, 3 Frameworks - Angular
- 949