A beginner-level intro to node.js. For presentation slides, check out the gh-pages branch.
Using node's standard libraries http
and fs
and built-in JSON support, read in a comma-seprated file of key-value pairs, and create an HTTP server which returns the file's contents as JSON.
Create two new CommonJS modules in a project directory. One module should expose an instantiable object called "Person". Your constructor should accept a JavaScript object literal, which will have properties to assign to the Person. Every person should have a property knowsKungFu
set to false
. The constructor should be able to override this. To accomplish this, install underscore
from npm and use it's _.extend
function in your constructor.
Your second custom module will be a custom logger, which will have an info
logging function. This function should print out the current date and time, as well as the given log message.
Create an Express application which responds to an HTTP GET
request, and renders an HTML page using the EJS template engine. This HTML page should contain a form, which issues a POST
action to log in a user, then redirect back to the same page.
The POST
action should store the user's username somehow - either in memory (store in an object) or in a cookie. On every GET
request to the form, the app should check for a logged-in user using connect middleware. If the username has been stored, it should be displayed in the HTML page using a context variable for the EJS template engine.
Sign up for and create a free MongoDB instance at MongoHQ. Use this connection string to authorize a Mongoose application that will have a single model, a blog post with a title
and a body
. Using Express, create a simple application that will save a new blog post, and list out all existing blog posts on an HTML page.
Secure the entire application with HTTP Basic Authentication middleware.
Create an API for listing blog posts as JSON, secured with HTTP basic.
Create a simple chat room application using socket.io. Starting with the simple chat example, add the ability for each user to add a nickname for themselves. You will need to store some "session" information about each socket connection. Consult the socket.io docs for guidance on how to do this.
Install the browserify package from npm globally - npm install -g browserify
. The file "browser.js" contains node.js-style code that uses both core node and third party modules from npm. Use the browserify command line utility to create a browser-ready version of browser.js
called commandline.js
, which should reside in the "public" directory of the project.
You will also want to check out the npm module browserify-middleware
. This module works with express to always serve the most recent version of your browserified source, and includes source maps so you can view and debug individual files. In app.js
, figure out how to use browserify-middleware to serve up a file called middleware.js
to the browser, which contains the browserified contents of browser.js
.