![Gitter](https://badges.gitter.im/Join Chat.svg)
Node.js Advanced TrainingRequired
Actual for versions:
- Node.js 4.2+
- Mongo 3.2+
- Redis 3.0+
Program (total: 30h)
Training Overview
(15m)
JavaScript
JavaScript Init Check Point (2h)
- Variables
- Conditions
- Loops
- Functions
- Prototypes
- Asynchronous functions
- ...
New in ECMAScript 2015 (ES6) (2h) [Homework]
- Block scoping
- let
- const
- Collections
- Map
- WeakMap
- Set
- WeakSet
- Classes
- Generators
- Promises
- Symbols
- Template strings
- Arrow Functions
- ...
JavaScript Style Guides (15m)
- Airbnb Coding Style
- Google JavaScript Style
- JavaScript "Standard" Style
- Crockfords’s Coding Standards
- Node.js Coding Style
- NPM "Funny" Coding Style
- Idiomatic JavaScript Coding Style
Node.js
Philosophy (15m)
- Small core
- Small modules
- Small surface area
- Simplicity and pragmatism
Design Fundamentals (1h)
-
Conceptions
- Asynchronous
- Event Loop
- IO operations
- Non blocking
-
Components
- V8
- libuv
- ...
Getting started (15m)
- Versions of Node.js
- Installation Node.js
- CLI commands
- First scripts
Errors Examples (15m)
-
System errors
-
Standard JavaScript errors
- SyntaxError
- ReferenceError
- TypeError
-
Assertion Errors
-
Custom errors
Modules and NPM (1h) [Homework]
- How it works?
- Supported formats
- Order of load and resolving algorithm
- The module cache
- NPM registry
Core modules (2h)
- Console
- Process
- Timers
- Errors
- Events
- Stream
- File System
- HTTP
- Crypto
- Child Processes
- ...
Useful NPM modules (1h)
- Lodash
- Async / Neo-async
- WS
- MongoDB
- Redis
- Postgres
- ...
Build your own modules (1h)
- File structure
- Deep with package.json
- Local packages
- Publish to NPM Registry
- Using in application
- ...
Common Patterns in Node.js (1h)
- Callbacks
- Error-first
- Async function in any case
- Recursive async functions
- ...
Design Patterns in Node.js (4h)
-
Creational Design Patterns
- Singleton
- Factory
- Abstract Factory
- ...
-
Structural Design Patterns
- Adapter
- Composite
- Decorator
- Facade
- Bridge
- Proxy
- ...
-
Behavioral Design Patterns
- Observer
- ...
Asynchronous Control Flow (2h)
-
The difficulties
- The callback hell
- Specific flows
-
Flows
- Sequential execution
- Parallel execution
- Limited parallel execution
-
Solutions
- Pure JS functions
- Async library
- Promises
- Generators
Wiring modules (1h)
- Hardcoded dependency
- Dependency injection
- Service locator
- Dependency injection container
Recipes for yours applications (2h)
- Run long sync operations
- Run heavy CPU operations
- Connection to MongoDB
- Repository pattern
- ...
Testing in Node.js (3h)
- What we test?
- Cases
- Priority
- How to do your testing most effective and fast?
- Classes
- Boundary
- Test levels
- Piramida
- Approaches
- TDD
- BDD
- Pairwise
- Mocks
- Tools and libraries
- Mocha
- Should
- Supertest
- Sinon
- Code Coverage
- Patterns and best practices in testing
- Continuous Integration
- Conception
- Travis CI
- Continuous Delivery
- Conception
Documentation (1h)
-
Approaches
- README Driven Development
- Reference documentation
- Unibutique Language
- Changelog
- License
-
Formats
- Markdown
- RAML
The design and architecture of the application (1h)
- MVC
- DDD
- SOA
- Micro-services
- ...
Projects: Common recommendations (1h)
- 12 factors app
- Configuration
- Logging
- Monitoring
- Profiling
- Connection to DBs and external services
- ...
Project 1: Simple web-site
- Express
- Serving static content by Node.js
- Using Nginx as reverse proxy and server of static content
Project 2: Service with REST API
- Express
- REST API design
- REST API testing
Project 3: Tiny cloud (micro-services)
- Micro-services overview
- Communication between services
- HTTP and Message Broker for communication
- Testing of micro-services
Performance and Scaling of application and system (2h)
-
Scaling
- What is scaling?
- Scaling Law of applications
- Methods of scaling applications
-
Performance
- What is performance?
- What should we measure?
- Tools for performance tests (Yandex.Tank, ab, siege)
- Analysis of the results
- Recommendations for scaling
-
Cache in applications
Profiling and optimizations of application and system (2h)
-
Top most common mistakes which fail performance
-
Profiling
- Memory
- CPU
- Blocking of EventLoop
-
Tools
Yours applications in production (1h)
- Best practices of logging
- Orchestration (Ansible)
- ...
Distribution of your application (Docker) (1h)
- What is Docker?
- Create Docker image with your application
- Run your applications
- How to run own cloud in 1 click? (Docker Compose)
- ...
Final Q&A (1h)
Author
License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.