Your First Week With Node.js, 2nd Edition
Copyright 2020 SitePoint Pty. Ltd.
Ebook ISBN: 978-1-925836-38-7
- Product Manager: Simon Mackie
- Project Editor Editor: James Hibbard
- English Editor: Ralph Mason
- Cover Designer: Alex Walker
Notice of Rights
All rights reserved. No part of this book may be reproduced, stored in a retrieval system or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical articles or reviews.
Notice of Liability
The author and publisher have made every effort to ensure the accuracy of the information herein. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors and SitePoint Pty. Ltd., nor its dealers or distributors will be held liable for any damages to be caused either directly or indirectly by the instructions contained in this book, or by the software or hardware products described herein.
Trademark Notice
Rather than indicating every occurrence of a trademarked name as such, this book uses the names only in an editorial fashion and to the benefit of the trademark owner with no intention of infringement of the trademark.
Published by SitePoint Pty. Ltd.
Level 1, 110 Johnston St, Fitzroy
VIC Australia 3065
Web: www.sitepoint.com
Email: books@sitepoint.com
About SitePoint
SitePoint specializes in publishing fun, practical, and easy-to-understand content for web professionals. Visit http://www.sitepoint.com/ to access our blogs, books, newsletters, articles, and community forums. Youll find a stack of information on JavaScript, PHP, design, and more.
About Craig Buckler
Craig is a freelance developer, author, and speaker who never shuts up about the web.
He started coding in the 1980s when applications had to squeeze into a few kilobytes of RAM. His passion for the Web was ignited in the mid 1990s when 28K modems were typical and 100KB pages were considered extravagant.
Over the past decade, Craig has written 1,200 tutorials for SitePoint as web standards evolved. Despite living in a technically wondrous future, he has never forgotten what could be achieved with modest resources.
Preface
While there have been quite a few attempts to get JavaScript working as a server-side language, Node.js (frequently just called Node) has been the first environment that's gained any traction. It's now used by companies such as Netflix, Uber and Paypal to power their web apps. Node allows for blazingly fast performance; thanks to its event loop model, common tasks like network connection and database I/O can be executed very quickly indeed.
From a beginner's point of view, one of Node's obvious advantages is that it uses JavaScript, a ubiquitous language that many developers are comfortable with. If you can write JavaScript for the client-side, writing server-side applications with Node should not be too much of a stretch for you.
In this book, we'll offer a beginner's introduction to Node and its related technologies, and get you under way writing your first Node applications.
Who Should Read This Book?
This book is for web developers who want to make a start using Node. It's assumed that you have a good understanding of JavaScript.
Conventions Used
Code Samples
Code in this book is displayed using a fixed-width font, like so:
A Perfect Summer's Day
It was a lovely day for a walk in the park.The birds were singing and the kids were all back at school.
Where existing code is required for context, rather than repeat all of it, will be displayed:
function animate() { new_variable = "Hello";}
Some lines of code should be entered on one line, but weve had to wrap them because of page constraints. An indicates a line break that exists for formatting purposes only, and should be ignored:
URL.open("http://www.sitepoint.com/responsive-web-design-real-user-testing/?responsive1");
Youll notice that weve used certain layout styles throughout this book to signify different types of information. Look out for the following items.
Tips, Notes, and Warnings
Hey, You!
Tips provide helpful little pointers.
Ahem, Excuse Me ...
Notes are useful asides that are relatedbut not criticalto the topic at hand. Think of them as extra tidbits of information.
Make Sure You Always ...
... pay attention to these important points.
Watch Out!
Warnings highlight any gotchas that are likely to trip you up along the way.
Supplementary Materials
- https://www.sitepoint.com/community/ are SitePoints forums, for help on any tricky problems.
- books@sitepoint.com is our email address, should you need to contact us to report a problem, or for any other reason.
Chapter 1: What Is Node and When Should I Use It?
by James Hibbard
So youve heard of Node.js, but arent quite sure what it is or where it fits into your development workflow. Or maybe youve heard people singing Nodes praises and now youre wondering if its something you need to learn. Perhaps youre familiar with another back-end technology and want to find out whats different about Node.
If that sounds like you, then keep reading. In this guide, Ill take a beginner-friendly, high-level look at Node.js and its main paradigms. Ill examine Nodes main use cases, as well as the current state of the Node landscape, and offer you a wide range of jumping off points (for further reading) along the way.
Node or Node.js?
Please note that, throughout the guide, Ill use Node and Node.js interchangeably.
What Is Node.js?
There are plenty of definitions to be found online. Lets take a look at a couple of the more popular ones. This is what the projects home page has to say:
Node.js is a JavaScript runtime built on Chromes V8 JavaScript engine.
And this is what Stack Overflow has to offer:
Node.js is an event-based, non-blocking, asynchronous I/O runtime that uses Googles V8 JavaScript engine and libuv library.
Hmmm, event-based, non-blocking, asynchronous I/Othats quite a lot to digest in one go. So lets approach this from a different angle and begin by focusing on the other detail that both descriptions mentionthe V8 JavaScript engine.
Node Is Built on Google Chromes V8 JavaScript Engine
The V8 engine is the open-source JavaScript engine that runs in Google Chrome and other Chromium-based web browsers, including Brave, Opera, and Vivaldi. It was designed with performance in mind and is responsible for compiling JavaScript directly to native machine code that your computer can execute.
However, when we say that Node is built on the V8 engine, we dont mean that Node programs are executed in a browser. They arent. Rather, the creator of Node (Ryan Dahl) took the V8 engine and enhanced it with various features, such as a file system API, an HTTP library, and a number of operating systemrelated utility methods.
This means that Node.js is a program we can use to execute JavaScript on our computers. In other words, its a JavaScript runtime.