Curso Node js Software Development
24 horasVisão Geral
Este Curso Node js Software Development foi desenvolvido para apresentar aos alunos o Node.js como uma plataforma. Node.js é uma estrutura de código aberto que roda em várias plataformas, como Windows, Linux, Unix, Mac OS X, etc. Ele é construído no tempo de execução do JavaScript do Chrome para criar facilmente aplicativos de rede rápidos e escaláveis. Node.js usa JavaScript no servidor. O Node.js pode ser usado para criar console, desktop, serviços da web e aplicativos da web. Node.js fornece uma rica biblioteca de vários módulos JavaScript que simplifica o desenvolvimento de aplicativos da Web usando Node.js em grande extensão.
Objetivo
Após a conclusão deste Curso Node js Software Development você serão capaz de:
- Saiba o que é Node.js e como é melhor usá-lo
- Instalar e configurar Node.js usando pacotes de instalação de plataforma e código-fonte
- Gerenciar pacotes Node.js com o Node Package Manager
- Use e crie módulos Node.js
- Configurar e proteger um aplicativo da Web
- Utilize recursos de arquivo e streaming com Node.js
- Entenda os padrões comuns de programação do Node.js
- Explorar problemas de desempenho com Node.js
- Solucionar problemas do Node.js
Pre-Requisitos
- Os alunos devem estar familiarizados com os conceitos de JavaScript e Web App
Materiais
Inglês/Português/Lab PráticoConteúdo Programatico
Introduction to Node.js
- What Is Node.js?
- Applications of Node.js
- Installing Node.js and NPM
- 'Hello, Node World!'
- How It Works
- Node.js is built on JavaScript: Benefits
- Traditional Server-Side I/O Model
- Disadvantages of the Traditional Approach
- Event-Driven, Non-Blocking I/O
- Concurrency
- Using Node Package Manager (NPM)
- The Express Server Framework
Module and Dependency Management
- Nature of a Node.js Project
- Introduction to Modules
- A Simple Module
- Using the Module
- Directory Based Modules
- Example Directory Based Module
- Using the Module
- Making a Module Executable
- Core Modules
- Loading Module from node_modules Folders
- Dependency Management Using NPM
- Installing a Package
- About Global Installation
- Setting Up Dependency
- Package Version Numbering Syntax
- Updating Packages
- Uninstalling Packages
- Alternate Dependency Management
The File System Module
- Introduction
- Basic File Manipulation
- Getting File/Directory Meta Data
- Read an Entire File
- The Buffer Class
- Writing to a File
- Reading in Chunks
- Writing in Chunks
- The open() Method
- Stream API
- The Readable Interface
- Example Reading Data in Chunks
- The Writable Interface
Events in Node JS
- Event Driven Programming
- Event Driven Programming (Contd.)
- Event Emitter
- EventEmitter Class
- EventEmitter Class – Inheritance
- The Event Loop and Event Handler
- Phases Overview
- Event Handlers
- Example (Using EventEmitter as an Object)
- Example (Inheriting from EventEmitter)
- EventEmitter Functions
- Issue with 'this' Keyword in Callback Functions
- Handling this Problem
- Controlling Event Callbacks in the Event Loop
Asynchronous Programming with Callbacks
- Synchronous and Asynchronous
- Callbacks
- Creating a Callback Function
- Calling The Callback Function
- Callback - Another Example
- Issue with 'this' Keyword in Callback Functions
- Handling this Problem
- Handling this Problem – Method 1 (Storing in Another Variable)
- Handling this Problem – Method 2 (Using Bind Function)
- Handling this Problem – Method 3 (Using ES6 Arrow Functions)
- Error Handling without Callback
- Error Handling with Callback
- Asynchronous Callback
- setImmediate() and nextTick()
- API Example
Asynchronous Programming with Promises
- The Problems with Callbacks
- Introduction to Promises
- Requirements for Using Promises
- Creating Promises Manually
- Calling the Promise-based Function
- Making APIs that support both callbacks and promises
- Using APIs that support both callbacks and promises
- Chaining then Method / Returning a Value or a Promise from then Method
- Promisifying Callbacks with Bluebird
- Using Bluebird
- Bluebird – List of Useful Functions
- Benefit of using Bluebird over ES6 for Promisification
- Error Handling in Promise-based asynchronous functions
Build and Dependency Management
- Introduction
- Bower Package Manager
- Managing Packages Using Bower
- Using Bower Packages
- Describing Dependency
- Grunt Build Manager
- Installing Grunt Components
- Writing a Grunt Build Script
- Running Grunt
- Running the JSHint Task
- Compiling 'Less' Files
- Compressing CSS Files
- Gulp Build Manager
- Gulp vs. Grunt
- Installing Gulp Components
- Writing a Build Script
- Running Gulp
- Compiling Less Files
Basic Web Application Development
- Introduction to the HTTP Module
- The Request Handler Callback Function
- The Server Object
- Example Use of Server Object
- The Request Object
- The Response Object
- Parsing Request Body
- Serving Static Files
- The HTTP Client API
- Making POST/PUT/etc. Requests
- Where To go from Here?
Debugging and Unit Testing
- Problem Determination Options
- Using console.log
- Using the 'debug' Logging Package
- Configure Logging
- The 'Node Inspector' Debugger
- Basic Usage of the Debugger
- Unit Testing Node.js Applications
- Getting Setup
- Writing a Test Script
- Running Unit Test
- Testing Asynchronous Code
- Using the Chai Assert API
- The Chai Expect API
Introduction to Express
- Introduction to Express
- Basic Routing Example
- Defining Routing Rules
- Route Path
- The Response Object
- Supplying URL Parameters
- Ordering of Routes
- Defining Catch All Route
- Full Example Web Service
Express Middleware
- Introduction to Express Middleware
- Writing a Middleware Function
- Binding to a Path
- Order of Execution
- Raising Error
- Handling Error
- Serving Static Files
- Handling POST Request Body
- Enable Response Compression
Accessing MongoDB from Node.js
- Getting Started
- The Connection URL
- Obtaining a Collection
- Inserting Documents
- Updating a Document
- Querying for Documents
- Deleting a Document
- Connection Pooling
Pug Template Engine
- Introduction to Pug
- Using Pug
- A Simple Template
- Passing Data to a Template
- Basic HTML Tag Rendering
- Rendering Values
- Conditional Rendering
- Rendering a List
- Layout Template
- Creating a Layout Template
- Creating a Content Template
Clustering and Failover
- Process Management
- Managing the Process Using OS Tools
- Installing a Service in Windows
- Create an Upstart Script in Ubuntu
- Process Management Using forever
- Clustering Basics
- Example Clustered Application
- More About Clustering
- Child Process Failover
Microservices with Node.js
- Microservices
- Microservices with Node.js
- The Express Package
- Installing and Using Express
- Defining Routing Rules in Express
- Route Path
- The Response Object
- A Simple Web Service with Express Example
- Composite Services
- Example - Call an API Using a Promise
- Using the callApi() Function
Supertest, Spy, and Nock
- SuperTest
- Sample Service
- Test without a Testing Framework
- Test with a Testing Framework
- Using Promises with SuperTest
- Nock
- Example
- Example – Request Body
- Using Query String
- Specifying Replies
New Features in Node.JS Version 4, 6, and 8
- Node History
- Node Version Policy
- LTS Release Schedule
- Changes in Node.js
- 'npm' Modules and Native Code
- Node 4.x
- Arrow Functions
- Arrow Functions As Parameters
- Using 'this' Within Arrow Functions
- ES2015 Classes
- Declaring Classes
- Declaring Instance Methods
- Accessor Methods
- Static Methods
- Inheritance With Classes
- Generator Functions
- Generator Example
- Controlling Generator Execution - next(value)
- Controlling Generator Execution - return(value)
- Controlling Generator Execution - throw(exception)
- Generator Recursion With 'yield*'
- Tail Call Optimization
- 'const' and 'let'
- Variable Scope
- Shadowing Variables
- Node 5.x
- Spread Operator
- Node 6.x
- Rest Parameter
- Node 7.x
- Node 8.x