Visão Geral
O Angular permite que os desenvolvedores criem facilmente aplicativos da Web dinâmicos e responsivos de página única que reescrevem dinamicamente partes da página atual, em vez de precisar gerar uma nova página em resposta a cada solicitação. O treinamento abrangente em Angular ensina aos participantes como criar aplicativos usando ES6, TypeScript e ferramentas modernas de front-end, incluindo npm e Webpack. Os alunos também obtêm uma compreensão da arquitetura do aplicativo e das práticas recomendadas de design em Angular, além de aprender como autenticar, testar a unidade e gerenciar o estado do aplicativo em um aplicativo Angular. Nota: Este curso é apropriado para todas as versões, Angular 2 a Angular 11.
Conteúdo Programatico
Introduction
- TypeScript and ECMAScript 6 (ES6) Fundamentals
- TypeScript Installation, Configuration & Compilation
- Type Annotations
- Classes
- Scoping using let, var, and const Keywords
- Arrow Functions
- ES Modules
- Decorators
- Template Literals
- Spread Syntax and Rest Parameters
- Destructuring
Angular Overview
- Benefits of Building using Angular
- Understanding Angular Versions
- Single-page Web Application Architectures vs. Traditional Serverside Web Application Architectures
- Angular Style Guide
- Angular Architecture
- Angular Compared to Other JavaScript Libraries and Frameworks (React, VueJS, etc…)
- Your First Angular Application
Components
- Understanding Components
- Component Properties & Methods
- Templates: Inline, Multi-line, and External with Component-relative Paths
Angular Modules (NgModule)
- Angular Modules vs. ES Modules
- Organizing your code into Feature Modules
Project Set-Up (Using the Angular CLI)
- Angular CLI Features
- Creating a New Project (CLI Prompts)
- Generating Code
- Customizing the Angular CLI
Data Binding
- Interpolation
- Property binding
- Event binding
- Two-way data binding
Directives
- Structural: ngFor, ngIf, ngSwitch
- Attribute: ngClass, ngStyle
Pipes
- Built-in Pipes: Using, Passing Parameters, Chaining
Advanced Components
- Component Communication using @Input, @Output
- Component Architecture
- Component Styles
- Component Lifecycle Hooks
- Evaluating UI Component Frameworks & Libraries
Services & Dependency Injection
- Using a service to access data
- Using a service to encapsulate business logic
- Understanding the scope of services
Dependency Injection
- Understanding Dependency Injection
- Angular’s Dependency Injection System
- Registering
- Injecting
Model-driven Forms (Reactive Forms)
- Importing the ReactiveFormsModule
- FormControl, FormGroup, and AbstractControl
- Binding DOM Elements to FormGroups and FormControls
- Validation Rules, Messages, and Styles
- Refactoring Reactive Forms for Reuse
- Custom Validators
Communicating with the Server using the HttpClient Service
- Deciding between Promises or Observables (RxJS)
- Making an HTTP GET Request
- Sending data to the server using Http POST and PUT Requests
- Issuing an HTTP DELETE Request
- Intercepting Requests and Responses
Router
- Importing the RouterModule
- Configuring Routes
- Displaying Components using a RouterOutlet
- Navigating declaratively with RouterLink
- Navigating with code using the Router
- Accessing parameters using ActivatedRoute
Deploying an Angular Application to Production
- Building an application using the Angular CLI
- Differential loading: creating a modern build (ES2015) and a legacy build (ES5)
- Deploying to a web server
Ivy: Next-Generation Compilation & Rendering Pipeline
- Understanding Ivy
- Ivy Goals
- Ivy Benefits & Current Status
- Ivy Bundle Sizes
Upgrading to the latest version of Angular from earlier versions
- 2.x and above
- Update Guide
- Deprecation Guide
- Patching Dependencies: npm audit fix
- Looking for AngularJS to Angular upgrades? See optional topics below.
Unit Testing
- Tools: Jasmine, Karma
- Jasmine Syntax: describe, it, beforeEach, afterEach, matchers
- Setup and your First Test
- Testing Terminology: Mock, Stub, Spy, Fakes
- Angular Testing Terminology: TestBed, ComponentFixture, debugElement, async, fakeAsync, tick, inject
- Simple Component Test
- Detecting Component Changes
- Testing a Component with properties (inputs) and events (outputs)
- Testing a Component that uses the Router
- Testing a Component that depends on a Service
- Testing a Service and Mocking its HTTP requests
- Testing a Pipe
RxJS and Observables
- What is an Observable?
- Creating Observables
- What is an Observer?
- Observer Example
- Operators: map, switchMap, debounceTime, distinctUntilChanged
- Practical Application of using RxJS
- Subject
- Subject Example
- EventEmitter or Observable
Security
- Best Practices
- Preventing Cross-site Scripting (XSS)
- Trusting values with the DOMSanitizer
- HTTP Attacks (CSRF and CSSI)
- Authentication using JSON Web Tokens (JWT)
- Authorization: Router Guards
Change Detection
- Understanding Zone.js and Change Detection
- Change Detection Strategies Default and OnPush
Advanced Routing
- Lazy-loading Angular Modules (using Dynamic Imports)
- Nested or Child Routes
Advanced Dependency Injection
- Providers
- Hierarchical Injection
Pipes
- Creating a custom Pipe using PipeTransform
- Understanding Pure and Impure Pipes