1.1. What is this Node.js business?
1.3. Express’s minimal philosophy
1.4. The core parts of Express
1.5. The ecosystem surrounding Express
1.5.1. Express vs. other web application frameworks
Chapter 2. The basics of Node.js
2.2.1. Requiring built-in modules
2.2.2. Requiring third-party modules with package.json and npm
2.3. Node: an asynchronous world
Chapter 3. Foundations of Express
3.1.1. Hello World with Express
3.1.2. How middleware works at a high level
3.1.3. Middleware code that’s passive
3.1.4. Middleware code that changes the request and response
3.3. Extending request and response
3.5. Example: putting it all together in a guestbook
4.1. Middleware and the middleware stack
4.2. Example app: a static file server
4.2.2. Writing your first middleware function: the logger
4.2.3. The static file server middleware
4.2.5. Switching your logger to an open source one: Morgan
4.2.6. Switching to Express’s built-in static file middleware
5.2.1. Grabbing parameters to routes
5.3. Using routers to split up your app
5.6. Putting it all together: a simple routing demo
6.2. A simple Express-powered JSON API
6.3. Create, read, update, delete APIs
6.5. Setting HTTP status codes
Chapter 7. Views and templates: Pug and EJS
7.1.1. A simple view rendering
7.1.2. A complicated view rendering
7.1.3. Making all view engines compatible with Express: Consolidate.js
7.2. Everything you need to know about EJS
7.3. Everything you need to know about Pug
Chapter 8. Persisting your data with MongoDB
8.2. Talking to Mongo from Node with Mongoose
8.3. Authenticating users with Passport
Chapter 9. Testing Express applications
9.1. What is testing and why is it important?
9.2. Introducing the Mocha testing framework
9.2.1. How does Node.js testing work?
9.2.2. Setting up Mocha and the Chai assertion library
9.2.3. What happens when you run your tests
9.3. Testing Express servers with SuperTest
10.2. Keeping your code as bug-free as possible
10.2.1. Enforcing good JavaScript with JSHint
10.4. Keeping your dependencies safe
10.6.2. Preventing clickjacking
Chapter 11. Deployment: assets and Heroku
11.1. LESS, a more pleasant way to write CSS
11.2. Using Browserify to require modules in the browser
11.3. Using Grunt to compile, minify, and more
11.3.2. Compiling LESS with Grunt
11.3.3. Using Browserify with Grunt
11.4. Using connect-assets to compile LESS and CoffeeScript
11.4.1. Getting everything installed
11.4.2. Setting up the middleware
11.5.2. Making a Heroku-ready app
11.5.3. Deploying your first app
12.3. Locking down dependency versions
12.3.1. The simple way: eschewing optimistic versioning