Angular
September 15th, 2017
Why it is great and how to get started

BUZZWOO! Angular Workshop
September 15, 2017
Armno
Mikhail


BUZZWOO! Angular Workshop
September 15, 2017

Agenda
- Introduction to Angular
- How to get started with Angular
- Testing in Angular
- Angular at BUZZWOO! - How we use it
- Q&A
BUZZWOO! Angular Workshop
September 15, 2017
BUZZWOO! Angular Workshop
September 15, 2017

AngularJS
Angular 1.x
Initial Release: 2010
1.0 Release: 2011
Current version: 1.6
$scope
Angular
"Modern" Angular
First stable release: September 2016
Version 2, 4, 5, 6 ..
Current version: 4.3
Following SemVer


BUZZWOO! Angular Workshop
September 15, 2017

BUZZWOO! Angular Workshop
September 15, 2017

BUZZWOO! Angular Workshop
September 15, 2017
Angular 5.0 is coming!
BUZZWOO! Angular Workshop
September 15, 2017


Getting Started with Angular
BUZZWOO! Angular Workshop
September 15, 2017
Learning Resources
BUZZWOO! Angular Workshop
September 15, 2017

Official Docs
BUZZWOO! Angular Workshop
September 15, 2017
egghead.io
BUZZWOO! Angular Workshop
September 15, 2017
thoughtram Blog
BUZZWOO! Angular Workshop
September 15, 2017
Nrwl.io blog
BUZZWOO! Angular Workshop
September 15, 2017
ng-newsletter
BUZZWOO! Angular Workshop
September 15, 2017
GitHub Repo
BUZZWOO! Angular Workshop
September 15, 2017
Bonus Skills
- Modern JavaScript (ES6, TypeScript)
- Concept of JavaScript Modules
- Modern build tools: gulp, webpack, npm
- Basic terminal commands
- RxJS
BUZZWOO! Angular Workshop
September 15, 2017

TypeScript
BUZZWOO! Angular Workshop
September 15, 2017

- Created by Microsoft
- Compiles to JavaScript
- Brings type system to JavaScript (optional)
- Angular is written in TypeScript
- Angular docs is also in TypeScript

BUZZWOO! Angular Workshop
September 15, 2017
"Can I just use ES5?"
BUZZWOO! Angular Workshop
September 15, 2017


Architecture Overview
BUZZWOO! Angular Workshop
September 15, 2017
Components
Templates
Directives
Services
Pipes
Modules
BUZZWOO! Angular Workshop
September 15, 2017
Root Module (AppModule)
User Module
Customer Module
Product Module
Contact Module
BUZZWOO! Angular Workshop
September 15, 2017
Modules (NgModules)

BUZZWOO! Angular Workshop
September 15, 2017
Component

BUZZWOO! Angular Workshop
September 15, 2017
Templates

- HTML Markup
- Property bindings
- Event bindings
- Display other components
BUZZWOO! Angular Workshop
September 15, 2017
Directives

- DOM Manipulation
- Extending existing elements
- Custom Form Validation Rule
BUZZWOO! Angular Workshop
September 15, 2017
Structural Directives
BUZZWOO! Angular Workshop
September 15, 2017
Attribute Directives
-
*ngIf
-
*ngFor
-
ngSwitch
-
ngModel
-
ngClass
-
ngStyle
Pipes

- Transform an input to an output.
- Or more complex task
- JsonPipe
- AsyncPipe
BUZZWOO! Angular Workshop
September 15, 2017
Services

- Business Logic
- Data Service
BUZZWOO! Angular Workshop
September 15, 2017
Dependencies Injection
BUZZWOO! Angular Workshop
September 15, 2017
@Component({
...
})
export class HomeComponent {
private userService: UserService;
constructor() {
this.userService = new UserService();
}
}@Component({
...
})
export class HomeComponent {
constructor(private userService: UserService) {
}
}Change Detection
BUZZWOO! Angular Workshop
September 15, 2017
- Happens on asynchronous operations
- Angular takes care of when to trigger the change to update the DOM
- Each component has its own Change Detector
- By default, change detection is triggered for all components
-
Can be optimized with ChangeDetectionStrategy.OnPush
BUZZWOO! Angular Workshop
September 15, 2017


Setting Up Development Environment
BUZZWOO! Angular Workshop
September 15, 2017

Development Environment
- Node 6.9+
- npm 3+
- A Code Editor



BUZZWOO! Angular Workshop
September 15, 2017

Angular CLI
$ npm install -g @angular/cliBUZZWOO! Angular Workshop
September 15, 2017

Alternative: Angular Seed Project

BUZZWOO! Angular Workshop
September 15, 2017
Creating a new Angular project
$ ng new awesome-appBUZZWOO! Angular Workshop
September 15, 2017
Development Server
$ ng serveBUZZWOO! Angular Workshop
September 15, 2017
BUZZWOO! Angular Workshop
September 15, 2017
Using Sass
$ ng set defaults.styleExt scssBUZZWOO! Angular Workshop
September 15, 2017

Generating
$ ng generate ...BUZZWOO! Angular Workshop
September 15, 2017
BUZZWOO! Angular Workshop
September 15, 2017

Installing 3rd-party modules
$ npm install lodash$ npm install @ngrx/storeBUZZWOO! Angular Workshop
September 15, 2017

Building
$ ng buildBUZZWOO! Angular Workshop
September 15, 2017
$ ng build -proddevelopment build
production build
BUZZWOO! Angular Workshop
September 15, 2017
Testing in Angular
BUZZWOO! Angular Workshop
September 15, 2017
How we use Angular at BUZZWOO!
BUZZWOO! Angular Workshop
September 15, 2017
Why Angular?
BUZZWOO! Angular Workshop
September 15, 2017
Why Angular?
- Experiences with AngularJS for some of previous projects
- Requested by some clients
- "It's made by Google"
- It can improve our workflow & code quality in general
BUZZWOO! Angular Workshop
September 15, 2017
Development Process

Local Dev Server
GitLab CE & CI Runners
Staging Server
Production Server
BUZZWOO! Angular Workshop
September 15, 2017

BUZZWOO! Angular Workshop
September 15, 2017
BUZZWOO! Angular Workshop
September 15, 2017

BUZZWOO! Angular Workshop
September 15, 2017

Benefits
-
More efficient development workflow
- Angular CLI, TypeScript
- Simplified workflows between Frontend & Backend
- Testing & Automation
- More comfortable with modern JavaScript technologies
- Be able to do more complex & challenging projects
BUZZWOO! Angular Workshop
September 15, 2017
BUZZWOO! Angular Workshop
September 15, 2017

It's the door opener!


There are more!
BUZZWOO! Angular Workshop
September 15, 2017
- Routing
- Forms
- Http & HttpClient
- Performance Optimization
- State Management
- Firebase
- etc.
BUZZWOO! Angular Workshop
September 15, 2017

BUZZWOO! Angular Workshop
September 15, 2017

Angular Workshop
By Armno P.
Angular Workshop
- 76





