By: +David Herron; Date: February 25, 2018
With the rapid advances in the Node.js platform, Packt Publishing (the publishers of Node.js Web Development) and I both felt a new edition was required. The 3rd edition published in mid-2016 updated the text to support Promises and some advanced techniques like deployment using Docker. Since then, async functions have emerged on the scene, and with Node.js 10.x we'll have ES6 modules available. I just submitted the first draft of all 12 chapters to the editors, meaning that the book is about a month from being finished.
The concept for this book is to each the Node.js/Express stack by focusing on the full life-cycle from developing basic features, to adding more features, to Mobile-first theming, to deploying on servers using Docker, to semi-real-time communications with Socket.IO, to testing both the API and the user interface (the latter using Puppeteer), and finally beefing up security using Helmet and other tools.
Some high points include:
Using several database providers Persisting data to a database is a key to almost every application we'd be writing. The Node.js world drivers for practically every database engine. We show using SQLite3, a light-weight no-setup-required SQL database, using the Sequelize ORM layer with both SQLite3 and MySQL, and finally using MongoDB.
Deployment using Docker The modern Internet is built on "cloud services" with application deployment in the hundreds of thousands of servers for especially popular applicatons. Docker has become extremely popular for simplifying DevOPS activities - that is, application deployment. We develop a multi-container deployment of four containers: a) the front end application code, b) its associated database server, c) a back-end user authentication service, and d) its associated database. We show developing that setup on the laptop, and deploying the setup to a cloud hosting provider.
Test infrastructure using Docker In the chapter on unit testing techniques, we modify the deployment Docker setup so we can create a similar test infrastructure. Test cases are then run inside the Docker test infrastructure.
Puppeteer for UI testing UI testing is extremely, and the Puppeteer tool is an exciting new way to automate UI testing. We go over its use.
Implementing HTTPS in Express with Let's Encrypt and a custom Docker image Security is extremely important, and we do go over several tools to improve Express application security. Especially important is supporting HTTPS everywhere for privacy, security, and authentication considerations. We show how to extend the Docker-based deployment to include a container with the Let's Encrypt tools to implement HTTPS support. You can also view Deploying an Express app with HTTPS support in Docker using Lets Encrypt SSL