Course Overview:
This workshop teaches the participants how to design and develop server side applications using the event-driven, non-blocking model framework Node.js. This program inducts the participant in some of the advanced concepts of the JavaScript language so that the participant is well equipped to build end-to-end application using JavaScript.
Course Objectives:
- Understand the non-blocking nature of Node.js
- Writing asynchronous code with call-backs and streams
- Learn how to modularize code using NPM and require()
- Understand and take advantage of the built-in apis for building scalable few applications
- Learn how to build web applications using Express.js
- Understand how to handle authentication and authorization
- Learn how to build real-time applications using WebSockets and socket.io
Pre-requisites:
- Experience in application development in any programming language
- Basic knowledge of the JavaScript language
- Exposure to any server technology (J2EE, .NET, Ruby etc)
Target Audience:
- Web developer who wants to build data intensive scalable applications using Node.js
Course Duration:
- 21 hours – 3 days
Course Content:
Day 1
JavaScript
Introduction oLanguage Overview
- Data Types oProgramming constructs
- Handling Exceptions
- Objects, Functions & Arrays
- Timer Functions
Expressive JavaScript
- The Flexibility of JavaScript
- JavaScript as a Loosely Typed Language
- Functions as First-Class Objects
- Object Mutability
Functions In Depth
- Function Objects
- Function Literal
- Function Invocation Patterns
- Augmenting Types
- Recursion & Closures
- Functions as Callbacks
- Function Currying & Memorization
Closures In Depth
- How Closures Work
- Private Variables, Callbacks and Timers
- Binding Function Contexts
- Overriding Function Behavior
Object Orientation With Prototypes
- Object Instantiation
- Constructors
- Inheritance and Prototype Chain
- Extending Object
- Extending Number
- Instantiation Issues
- Writing class-like code ES6
New in ES6 oClasses olet and const
- Arrow functions
- Enhanced Object Literals
- Destructuring
- Spread Operator
- Generators and Iterators
- Symbols
- Comprehensions
- Async Programming using Promises
Using Babel.js
Day 2 – 3
NODE.JS
Introduction to Node.js
- Installing Node.js
- Node’s Event Loop
- Alternatives to Node.js
- Writing asynchronous code
Modularizing code
- Understanding built-in modules
- Techniques for modularizing JavaScript code
- Using require() to modularize application code
- Using npm for third-party modules oHandling Exceptions
Events and Streams
- Understanding Events
- EventEmitter class
- Understanding Streams
- Reading and writing streams
- Using pipe()
Accessing Local Resources
- Process Object
- Manipulating File System
- Understanding Buffers
Node.js and the web
- Handling web requests
- Building a web server
- Understanding the need for web sockets
- Realtime interaction using socket.io
Building web applications using Express.js
- Installing Express.js
- Routing
- Parameters and queries in routing
- Building views using view engine of choice (ejs / jade / handlebars
- Using blocks for layout ODisplaying data
- Working with forms
- Serving files
- Working with cookies and sessions
- Authentication and authorization
- Error Handling
NodeJs Addons using C++
- Overview of N-API
- Using node-gyp and node-addon-api
- Configuring application
- Building and using C++ Api in Node.js
Scaling Node applications
- The Child process model
- Exec, spawn, and fork functions
- Using the Cluster module
Node.js Eco System
- Node Packages
- Packages of interest
- Deciding Factors
Debugging Node Applications
- Summary and Closing Remarks