ksashikumar / node-tutorial

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Introduction:

  • JS - prototype based, dynamic, object oriented language
  • JS Engine - V8, Chakra, SpiderMonkey
  • NodeJS is not a language or framework, its runtime for JS
  • NodeJS is non-blocking event-driven asynchronous runtime

NodeJS Architecture:

  • NodeJS - V8 + libuv
  • Eventloop - hotel waiter kitchen example with eventqueue/callbackqueue
  • NodeJS is for I/O or Network intensive applications and not for CPU intensive applications

NodeJS Installation:

Modules:

  • Global Object
  • Module per file abstraction
  • Module Creation
  • require vs import -> ES Modules and CommonJS modules
  • Module Wrapper Function

Default Modules:

  • Path Module
  • OS Module
  • File System Module
  • Events Module
  • Event Arguments
  • Extending Event Emitter
  • HTTP Module

Package Manager:

  • Introduction
  • Package.json
  • Node Package Installation
  • Using a Package
  • Package Dependencies
  • NPM Packages and Source Control
  • Semantic Versioning
  • Listing the Installed Packages
  • Registry Info Viewing for A Package
  • Specific Version of a Package Installing
  • Local Packages Updating
  • DevDependencies
  • A Package Uninstalling
  • Working with Global Packages
  • Updating a Published Package

HTTP & ExpressJS:

  • Building RESTful API's Using Express
  • Introduction
  • RESTful Services
  • Introducing Express
  • First Web Server Building
  • Nodemon
  • Environment Variables
  • Route Parameters
  • Handling HTTP GET Requests
  • Handling HTTP POST Requests
  • Calling Endpoints Using Postman
  • Input Validation
  • Handling HTTP PUT Requests
  • Handling HTTP Delete Requests

Express- Advanced Topics

  • Introduction
  • Creating Custom Middleware
  • Built-in Middleware
  • Third-party Middleware
  • Environments
  • Configuration
  • Debugging
  • Templating Engines
  • Database Integration
  • Authentication
  • Structuring Express Applications

Asynchronous JavaScript

  • Synchronous vs Asynchronous Code
  • Patterns for Dealing with Asynchronous Code
  • Callbacks
  • Callback Hell
  • Named Functions to Rescue
  • Promises
  • Replacing Callbacks with Promises
  • Consuming Promises
  • Creating Settled Promises
  • Running Promises in Parallel
  • Async and Await

CRUD Operations Using Mongoose

  • Introducing MongoDB
  • Installing MongoDB on Mac
  • Installing MongoDB on Windows
  • Connecting to MongoDB
  • Schemas
  • Models
  • Saving a Document
  • Querying Documents
  • Comparison Query Operators
  • Logical Query Operators
  • Regular Expressions
  • Counting
  • Pagination

Mongo - Data Validation

  • Validation
  • Built-in Validators
  • Custom Validators
  • Async Validators
  • Validation Errors
  • SchemaType Options
  • Project- Add Persistence to Genres API
  • Project- Build the Customers API

Mongoose- Modeling Relationships between Connected Data

  • Modelling Relationships
  • Referencing Documents
  • Population
  • Embedding Documents
  • Using an Array of Sub-documents

Authentication and Authorization

  • Introduction
  • Creating the User Model
  • Registering Users
  • Using Lodash
  • Hashing Passwords
  • Authenticating Users
  • Testing the Authentication
  • JSON Web Tokens
  • Generating Authentication Tokens
  • Storing Secrets in Environment Variables
  • Setting Response Headers
  • Encapsulating Logic in Mongoose Models
  • Authorization Middleware
  • Protecting Routes
  • Getting the Current User
  • Logging Out Users
  • Role-based Authorization

Handling and Logging Errors

  • Introduction
  • Handling Rejected Promises
  • Express Error Middleware
  • Removing Try Catch Blocks
  • Express Async Errors
  • Logging Errors
  • Logging to MongoDB
  • Uncaught Exceptions
  • Unhandled Promise Rejections
  • Error Handling Recap
  • Extracting Routes
  • Extracting the Db Logic
  • Extracting the Logging Logic
  • Extracting the Config Logic
  • Extracting the Validation Logic

Unit Testing

  • What is Automated Testing
  • Benefits of Automated Testing
  • Types of Tests
  • Test Pyramid
  • Tooling
  • Writing Your First Unit Test
  • Testing Numbers
  • Grouping Tests
  • Refactoring with Confidence
  • Testing Strings
  • Testing Arrays
  • Testing Objects
  • Testing Exceptions
  • Continuously Running Tests
  • Exercise- Testing the FizzBuz
  • Interaction Testing
  • Jest Mock Functions

About


Languages

Language:JavaScript 100.0%