O'Reilly logo

Node for Front-End Developers by Garann Means

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Adding In Middleware

It’s important to understand what Node is doing under the hood when it’s serving files, especially since it isn’t actually that complicated. All the work we expect Apache, Nginx, and other servers to do for us automatically can be reduced to simple programming, little more than parsing a string. It’s also good to know what Node has built-in for those tasks. However, it’s safer, more efficient, and far more common to use one or more of the third-party tools already written to do this sort of work.

Note

In the context of a web server, middleware is a layer between the guts of the server and the code you’re writing to run on it that provides a set of abstractions anyone writing code for the platform will be likely to need. It differs from other modules you might pull into your application in that it exists as a buffer between Node and your app, not a utility used within your app.

Connect is an overwhelmingly popular Node middleware framework that provides the basis for other popular solutions like Express. One of the tools Connect provides is the static module, which does exactly what we’ve done above, but in a more robust fashion. If we add in Connect, we can write the same application with far less code:

var connect = require("connect");
      
connect(connect.static(__dirname + "/public")).listen(8000);

The code you see above replaces everything we wrote in the last example in just two lines. To actually run this, you’ll need to use npm to install Connect. Installing modules ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required