• Stars
    star
    132
  • Rank 274,205 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 14 years ago
  • Updated almost 14 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A DOM inspired javascript web server control framework for nodeJS that aims for unprecented control, simplicity and the functionality of traditional servers such as apache or lightnode.

Lightnode

An http internet server playground, designed to have unprecented control meet simplicity and functionality.

Lightnode is an http (nodejs based) javascript library that aims to deliver the potential that node js makes available, in a offering similar to lighttpd or apache. see http://www.ngspinners.com/lightnode/ for more info.

Goals

  • a complete web server platform
  • good integration with and enhancement of node philosophy and usage
  • minimal / non-intrusive / non-assuming design
  • support for taming the unprecedented control node provides
  • robust static file serving with caching + virtual host + customizability
  • simple to understand handling logic
  • instructable functionality (bypass handling logic)
  • built-in desirable functionality to utilize with node such as statistics (not yet implemented), file serving, control framework etc
  • good documentation, understandable source

Mechanisms

  • request delegation (server receives -> delegates -> emits request)
  • scaling server hierarchy (a section of requests can be delegated to a child server in the hierarchy)
  • pre request customization of hierarchy (the server objects in the hierarchy can be created and customized before any requests come in)
  • intercept requests directly from node before they go into the lightnode server
  • server locates a physical file given request (overridable)
  • serving logic can be bypassed and sendFile() function can be used directly

Status

Works. Alpha phase. As efficient as lighttpd, unsure if it scales as far.

Provides a nice framework for dynamic server applications (routing). Provides static file serving with caching, virtual hosts, some customization possible.

Tutorials still to come.

Examples

see the examples folder. The examples using the delegation mechanism are usually preferred, those without are for demonstration of the difference and a different option.

  • a simple single host server
  • a simple single host server with api route
  • virtual hosting with api (delegation version below is preferred)
  • using delegation:
    • a simple single host server with api route
    • virtual hosting with api

Installation

Using NPM

npm install lightnode

Manually

Just copy the lightnode.js file into your node library path (~/.node_libraries). It's best if you do this by making a symlink from there to the repo, instead of copying, that way you can update the repo or make your own edits and the installed version reflects the changes immediately.

Usage

See the examples directory to learn the API, or look at lightnode.js.