Book Image

Node Cookbook - Third Edition

By : David Mark Clements, Mathias Buus Madsen, Peter Elger, Matteo Collina
Book Image

Node Cookbook - Third Edition

By: David Mark Clements, Mathias Buus Madsen, Peter Elger, Matteo Collina

Overview of this book

Today's web demands efficient real-time applications and scalability. Asynchronous event-driven programming is ideal for this, and this is where Node.js comes in. Server-side JavaScript has been here since the 90s, but Node got it right. With Node for tooling and server-side logic, and a browser-based client-side UI, everything is JavaScript. This leads to rapid, fluid development cycles. The full-stack, single language experience means less context-switching between languages for developers, architects and whole teams. This book shows you how to build fast, efficient, and scalable client-server solutions using the latest versions of Node. The book begins with debugging tips and tricks of the trade, and how to write your own modules. Then you'll learn the fundamentals of streams in Node.js, discover I/O control, and how to implement the different web protocols. You'll find recipes for integrating databases such as MongoDB, MySQL/MariaDB, Postgres, Redis, and LevelDB. We also cover the options for building web application with Express, Hapi and Koa. You will then learn about security essentials in Node.js and advanced optimization tools and techniques. By the end of the book you will have acquired the level of expertise to build production-ready and scalable Node.js systems. The techniques and skills you will learn in this book are based on the best practices developed by nearForm, one of the leaders in Node implementations, who supported the work of the authors on this book.
Table of Contents (12 chapters)

What this book covers

Chapter 1, Debugging Processes, David Mark Clements

Debugging Processes explores some excellent debugging tools for Node, along with techniques and practices to increase visibility and process information as we encounter debugging scenarios.

Chapter 2, Writing Modules, David Mark Clements

Writing Modules teaches how Node's module system works and how to create modules for various scenarios according to industry best practices.

Chapter 3, Coordinating I/O, David Mark Clements

Coordinating I/O explores some core APIs provided by Node, along with a few third-party utilities that allow us to interact with standard I/O, the filesystem, and the network stack.

Chapter 4, Using Streams, Mathias Buus and David Mark Clements

Using Streams explains why streams are so important, how they bring functional programming to an asynchronous world, and how to avoid stream gotchas.

Chapter 5, Wielding Web Protocols, David Mark Clements

Wielding Web Protocols demonstrates how to work with the web at a low level without using web framework. In this chapter, we will explore how to implement clients and servers using various web protocols, including HTTP, SMTP, and WebSockets.

Chapter 6, Persisting to Databases, David Mark Clements

Persisting to Databases takes you through a cross-section of database systems, such as MySQL/MariaDB, Postgres, Redis, MongoDB, and LevelDB, and how to interact with them from within a Node process.

Chapter 7, Working with Web Frameworks, David Mark Clements

Working with Web Frameworks is an exploration creating web applications with three of the most popular web frameworks: Express, Hapi, and Koa. From scaffolding to using middleware/plugins, to working with views, to implementing authentication, this chapter supplies a comprehensive tour through creating a web application with a web framework in Node.js.

Chapter 8, Dealing with Security, David Mark Clements

Dealing with Security covers various attacks that can be made against a system and shows common programmer errors that lead to vulnerable systems, along with some best practices and approaches that help create secure systems.

Chapter 9, Optimizing Performance, Matteo Collina, and David Mark Clements

Optimizing Performance provides an optimization workflow focused on measurement, alteration, and iteration. This chapter demonstrates how to identify bottlenecks, refactor for performance, and develop habits for writing efficient, optimizable JavaScript as an everyday practice.

Chapter 10, Building Microservice Systems, Peter Elger, and David Mark Clements

Building Microservice Systems teaches what microservices are, how they inherently facilitate the scaling up of robust production systems, and what's available in the ecosystem to assist in microservice development.

Chapter 11, Deploying Node.js, Peter Elger, and David Mark Clements

Deploying Node.js demonstrates how to put a multiprocess Node.js system into production, from containerizing processes with Docker to creating a Kubernetes cluster, to building a CI deployment pipeline and deploying associated infrastructure (such as a Docker Registry), to deploying an entire system to a cloud provider.