1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| var http = require('http') var fs = require('fs') var path = require('path') var mime = require('mime')
var cache = {}
function send404(response) { response.writeHead(404, { 'Content-Type': 'text/plain' }) response.write('Error 404: resource not found') response.end() }
function sendFile(response, filePath, fileContents) { response.writeHead(200, { 'Content-Type': mime.getType(path.basename(filePath)) }) response.end(fileContents) }
function serveStatic(response, cache, absPath) { if (cache[absPath]) { sendFile(response, absPath, cache[absPath]) } else { fs.exists(absPath, function(exists) { if (exists) { fs.readFile(absPath, function(err, data) { if (err) { send404(response) } else { cache[absPath] = data sendFile(response, absPath, data) } }) } else { send404(response) } }) } }
var server = http.createServer(function(request, response) { var filePath = false
if (request.url == '/') { filePath = 'public/index.html' } else { filePath = 'public' + request.url }
var absPath = './' + filePath serveStatic(response, cache, absPath) })
server.listen(3000, function() { console.log('Server listening on port 3000') })
|