Node入门 √
http://www.nodebeginner.org/index-zh-cn.html
index.js
var server = require("./server") var router = require("./router") var requestHandlers = require("./requestHandlers") var handle = {} handle["/"] = requestHandlers.start handle["/start"] = requestHandlers.start handle["/upload"] = requestHandlers.upload server.start(router.route, handle)
server.js 服务器
var http = require("http") var url = require("url") function start(route, handle) { function onRequest(request, response) { var postData = "" var pathname = url.parse(request.url).pathname console.log("Request for " + pathname + " received.") request.setEncoding("utf8") request.addListener("data", function(postDataChunk) { postData += postDataChunk console.log("Received POST data chunk '" + postDataChunk + "'.") }) // 监听 /start /upload 的请求,/start 没有post也有end request.addListener("end", function() { route(handle, pathname, response, postData) }) } http.createServer(onRequest).listen(8888) console.log("Server has started.") } exports.start = start
router.js 路由
function route(handle, pathname, response, postData) { console.log("About to route a request for " + pathname) if (typeof handle[pathname] === 'function') { handle[pathname](response, postData) } else { console.log("No request handler found for " + pathname) response.writeHead(404, {"Content-Type": "text/plain"}) response.write("404 Not found") response.end() } } exports.route = route
requestHandlers.js 请求处理程序
var querystring = require("querystring") function start(response, postData) { console.log("Request handler 'start' was called.") var body = '<!doctype html>' + '<html lang="zh-CN">' + '<head>' + '<meta charset="utf-8">' + '<title></title>' + '</head>' + '<body>' + '<form action="/upload" method="post">' + '<input name="title" type="text">' + '<textarea name="description"></textarea>' + '<input type="submit" value="Submit text">' + '</form>' + '</body>' + '</html>' response.writeHead(200, {"Content-Type": "text/html"}) response.write(body) response.end() } function upload(response, postData) { var body = '<!doctype html>' + '<html lang="zh-CN">' + '<head>' + '<meta charset="utf-8">' + '<title></title>' + '</head>' + '<body>' + querystring.parse(postData).title + querystring.parse(postData).description + '</body>' + '</html>' console.log("Request handler 'upload' was called.") response.writeHead(200, {"Content-Type": "text/html"}) response.write(body) response.end() } exports.start = start exports.upload = upload