Sharing code with the browser
One of the main selling point of Node.js is the fact that it's based on JavaScript and runs on V8, an engine that actually powers one of the most popular browsers: Chrome. We might think that that's enough to conclude that sharing code between Node.js and the browser is an easy task; however as we will see, this is not always true. Unless we want to share only some small, self-contained and generic fragments of code, developing for both the client and the server requires a non-negligible level of effort in making sure that the same code can run properly in two environments that are intrinsically different. For example, in Node.js we don't have the DOM or long-living views, while in the browser we surely don't have the filesystem or the ability to start new processes. Most of the effort required when developing for both the platforms is making sure to reduce those differences to the minimum. This can be done with the help of abstractions and patterns that enable...