You are previewing Smashing Node.js: JavaScript Everywhere, 2nd Edition.

Smashing Node.js: JavaScript Everywhere, 2nd Edition

Cover of Smashing Node.js: JavaScript Everywhere, 2nd Edition by Guillermo Rauch Published by John Wiley & Sons
  1. Cover
  2. Table of Contents
  3. Title Page
  4. Foreword
  5. Part I: Getting Started: Setup and Concepts
    1. Chapter 1: The Setup
      1. Installing on Windows
      2. Installing on OS X
      3. Installing on Linux
      4. The Node REPL
      5. Executing a file
      6. NPM
      7. Summary
    2. Chapter 2: Javascript: An Overview
      1. Introduction
      2. Basic JavaScript
      3. v8 JavaScript
      4. Summary
    3. Chapter 3: Blocking and Non-blocking IO
      1. With great power comes great responsibility
      2. Summary
    4. Chapter 4: Node JavaScript
      1. The global object
      2. The module system
      3. Exposing APIs
      4. Events
      5. Buffers
      6. Summary
  6. Part II: Essential Node APIs
    1. Chapter 5: CLI and FS APIs: Your First Application
      1. Requirements
      2. Writing your first program
      3. Exploring the CLI
      4. Exploring the fs module
      5. Summary
    2. Chapter 6: TCP
      1. What are the characteristics of TCP?
      2. Telnet
      3. A TCP chat program
      4. An IRC Client program
      5. Summary
    3. Chapter 7: HTTP
      1. The structure of HTTP
      2. Headers
      3. Connections
      4. A simple web server
      5. A twitter web client
      6. A superagent to the rescue
      7. Reloading HTTP servers with up
      8. Summary
  7. Part III: Web Development
    1. Chapter 8: Connect
      1. A simple website with HTTP
      2. A simple website with Connect
      3. Middleware
      4. Summary
    2. Chapter 9: Express
      1. A simple express app
      2. Settings
      3. Template engines
      4. Error handling
      5. Convenience methods
      6. Routes
      7. Middleware
      8. Organization strategies
      9. Summary
    3. Chapter 10: WebSocket
      1. AJAX
      2. HTML5 WebSocket
      3. An Echo Example
      4. Mouse cursors
      5. The Challenges Ahead
      6. Summary
    4. Chapter 11: Socket.IO
      1. Transports
      2. A chat program
      3. A DJ-by-turns application
      4. Summary
  8. Part IV: Databases
    1. Chapter 12: MongoDB
      1. Installation
      2. Accessing MongoDB: A user authentication example
      3. Introducing Mongoose
      4. A mongoose example
      5. Summary
    2. Chapter 13: MySQL
      1. node-mysql
      2. sequelize
      3. Summary
    3. Chapter 14: Redis
      1. Installing Redis
      2. The Redis Query Language
      3. Data types
      4. Redis and Node
      5. Summary
  9. Part V: Testing
    1. Chapter 15: Code Sharing
      1. What can be shared?
      2. Writing compatible JavaScript
      3. Putting it all together: browserbuild
      4. Summary
    2. Chapter 16: Testing
      1. Simple testing
      2. Expect.JS
      3. Mocha
      4. Summary

Chapter 8: Connect

Node.js provides basic APIs for common network applications. So far, you have looked at the basic APIs for TCP servers and an API for HTTP that builds on top of it.

Most real-world applications, however, perform a series of common tasks that you probably don’t want to re-implement on top of primitive APIs over and over again.

Connect is a toolkit that sits on top of the HTTP server to provide a new way of organizing code that interfaces with request and responses, around units called middleware.

To illustrate the benefits of code reuse through middleware, assume this sample structure for a website:

$ ls website/

index.html  images/

Under the images directory, you have four images:

$ ls website/images/

1.jpg  2.jpg  3.jpg  4.jpg

The index.html simply displays the four images, and you want to access the website through http://localhost as in other examples (see Figure 8-1):

<h1>My website</h1>

<img src=”/images/1.jpg”>

<img src=”/images/2.jpg”>

<img src=”/images/3.jpg”>

<img src=“/images/4.jpg“>


Figure 8-1: A simple static website demonstrating Connect’s capabilities

To show the simplicity Connect offers for the world of HTTP applications, this chapter shows how to write this simple website with the native http API and later with the connect API.

A simple website with HTTP

As usual, you start by requiring the http module for the server and the fs module for reading ...

The best content for your career. Discover unlimited learning on demand for around $1/day.