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 api using Express.js
- 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:
- 35 hours – 5 days
Course Content:
ADVANCED JAVASCRIPT
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
JavaScript Gotchas
- Global Variables
- Scope
- Semicolon Insertions
- Type Coercion
- Summary and Conclusion
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 JavaScirpt code
- Using require() to modularize application code
- Using npm for third-party modules
- Handling 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 APIs using Express.js
- Installing Express.js
- Routing
- Parameters and queries in routing
- Creating REST services
- 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
- Summary and Conclusion