Node.js – Simple Http Server
一. 安装和部署Node.js开发环境
1. 安装node.js,请访问http://nodejs.org/
2. IDE开发环境
开发方法有多种:notepad, eclipse, google chrome, WebMatrix, ...,各有各的优缺点,个人比较喜欢eclipse方式。
eclipse配置步骤可以参考如下网址:
http://download.eclipse.org/eclipse/downloads/
https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger
二. 创建一个基本的Http Server
1. 首先新建一个index.js文件,输入如下代码:
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Welcome to Node.js!"); response.end(); }).listen(6600);
2. 命令行进入index.js目录,输入如下代码来启动:
node index.js
3. 打开浏览器地址栏输入:http://127.0.0.1:6600,浏览器显示“Welcome to Node.js!”。
通过以上简单的三步操作,一个基本的Http Server就部署好了,在这个基础上下面我们就来加一些小功能。
三. 实现一个支持表单提交的Http Server
为了实现这一功能我们将面临三个问题:如何模块化服务器代码、如何路由处理不同的Http请求、如何获取Post表单数据
1. 模块化(require, exports)
将如下代码保存为module.js
function abc() { console.log("function abc."); } exports.test = abc;
再将如下代码保存为run.js,然后执行node run.js,可以看到输出“function abc.”
var v = require("./module"); v.test();
其中module.js就是我们模块化出来的文件,这样我们就可以不用将所有代码都写在一个js文件中让node来执行。
2. 路由Http请求
我们可以使用一个字典来存放路由规则,字典定义为这样的结构<url, function>,不同的url请求执行不同的function
var map = {}; map["/"] = controller.home; map["/home"] = controller.home; map["/submit"] = controller.submit; map["/result"] = controller.result;
3. 获取Post表单数据
通过监听request对象中的data事件来存储Post数据,end事件表示Post数据接收完毕。
var postData = ""; request.setEncoding("utf8"); request.on("data", function(data) { postData += data; console.log("Received POST data chunk '" + data + "'."); }); request.on("end", function() { route(map, pathname, response, postData); });
使用node自带的querystring模块获取表单中提交的数据。
var querystring = require("querystring"); var data = querystring.parse(postData).myText;
4. 完整实现
以上三个问题解决了,下面我们就来着手实现,基本可以分为三个模块:server.js, controller.js, router.js和一个index.js。
server.js用于启动服务和接收Http请求。
controller.js类似于ASP.Net MVC中的Controller,用于实现各种请求的处理。
router.js是Http请求的路由器,根据不同的请求执行Controller中相应的方法,未知请求将显示404错误页面。
index.js程序入口。
详细代码下载:SimpleServer
四. Node.js相关学习网站