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 5: CLI and FS APIs: Your First Application

This chapter examines some of the most essential Node.JS APIs: those related to the handling of stdin and stdout of a process (stdio) and those related to the filesystem (fs).

As discussed in the preceding chapter, the Node approach to concurrency inherently involves the use of callbacks and events. These APIs provide your first contact with the flow control involved in nonblocking evented I/O programming.

In addition to learning how all these APIs interact together, you create your first application: a simple command-line file explorer, whose goal is to allow the user to read and create files.


Start by defining what you want your program to do:

You want the program to run on the command line. This means that the program is summoned either with the node command or by executing it directly, and then provides interaction with the user input and output through the terminal.

Upon starting, the program should display the list of current directories (see Figure 5-1).


Figure 5-1: List of current directories displayed at startup.

After you select a file, the program should output its contents.

After you select a directory, the program should display its children.

Then the program should quit.

Considering these cases, you can break down the project into different steps:

1. Creating our module

2. Deciding on sync ...

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