Summary
In this chapter, we shed some light on Node.js streams and some of their most common use cases. We learned why streams are so acclaimed by the Node.js community and we mastered their basic functionality, enabling us to discover more and navigate comfortably in this new world. We analyzed some advanced patterns and started to understand how to connect streams in different configurations, grasping the importance of interoperability, which is what makes streams so versatile and powerful.
If we can’t do something with one stream, we can probably do it by connecting other streams together, and this works great with the one thing per module philosophy. At this point, it should be clear that streams are not just a good-to-know feature of Node.js; they are an essential part – a crucial pattern to handle binary data, strings, and objects. It’s not by chance that we dedicated an entire chapter to them.
In the next few chapters, we will focus on the traditional object-oriented design patterns. But don’t be fooled; even though JavaScript is, to some extent, an object-oriented language, in Node.js, the functional or hybrid approach is often preferred. Get rid of every prejudice before reading the next chapters.