Review of JavaScript best practices
- Visibility of the variables
- Code structuring
- Closures
- Objects and prototypes
- Lodash
Introduction to Node.js
- Origin of the project
- The Chrome V8 interpretation engine
- The concept of event management
- The different uses
- Overview of the ecosystem of plugins
- Installation
- A very first example
Node.js architecture
- Asynchronism
- Programming by callbacks
- The event loop
Modules and dependency management
- The modular approach
- NPM and manipulation of the modules
- The package.json file in detail
- Modularization of its code
- Core modules: console, process, os, fs, path and util
- Publish a module on NPM
Node and the Web: HTTP, Connect & Express
- Perimeter of the HTTP module
- Connect and its middlewares
- Web server with Express
- Generate an Express generator server
- Router queries
- Managing a request and creating a response
- Use a template engine
- Opening at Passport and Hapi
Asynchronous details
- Callback Hell & Pyramid of Doom
- The async module
- The promises
- Examples of concatenation and parallelization
- Error management
Real-time communication
- Integration of HTML5 WebSockets
- Socket.io
- Transport Management
- Client side and server side integration
The management of the streams
- Description of Streams2
- Buffers
- Type of flow
- Pipelining
- Object mode
- The tools: through2, trumpet, JSONStream ...
- Gulp
Link with persistence of data
- Approach via the driver or an ORM
- Integration with a relational database
- SQL abstraction modules
- The Sequelize module
- Integration with a NoSQL database
- The Mongoose module
Tooling and Software Factory
- Editing tools
- Use of logs
- Debugging tools
- Unit tests with Mocha
- Chai and Otherwise Modules
- Nodemon
- The orchestration of tasks (build) with Grunt
- Integration in Jenkins integration server
Node.js in Cluster mode
- Using the cluster module
- Master and workers
- Messaging
- Error management
Beyond Node.js
- MEAN Stack
- Deploying Node in the Cloud
- Example with AWS, Heroku
- Monitoring with pm2 and NewRelic