Page 89 - Node.js开发指南
P. 89
82 第 5 章 使用 Node.js 进行 Web 开发
①
议 。这些语言要求由 HTTP 服务器来调用,因此你需要设置一个 HTTP 服务器来处理客户
端的请求,HTTP 服务器通过 CGI 或其他方式调用脚本语言解释器,将运行的结果传递回
HTTP 服务器,最终再把内容返回给客户端。而在 Node.js 中,很多工作需要你自己来做(并
不是都要自己动手,因为有第三方框架的帮助)。
5.1.1 使用 http 模块
Node.js 由于不需要另外的 HTTP 服务器,因此减少了一层抽象,给性能带来不少提升,
但同时也因此而提高了开发难度。举例来说,我们要实现一个 POST 数据的表单,例如:
<form method="post" action="http://localhost:3000/">
<input type="text" name="title" />
<textarea name="text"></textarea>
<input type="submit" />
</form>
这个表单包含两个字段:title 和 text,提交时以 POST 的方式将请求发送给
http://localhost:3000/。假设我们要实现的功能是将这两个字段的东西原封不动地返回给用户,
PHP 只需写两行代码,储存为 index.php 放在网站根目录下即可:
echo $_POST['title'];
echo $_POST['text'];
在 3.5.1 节中使用了类似下面的方法(用http模块):
var http = require('http');
var querystring = require('querystring');
var server = http.createServer(function(req, res) {
var post = '';
req.on('data', function(chunk) {
post += chunk;
});
req.on('end', function() {
post = querystring.parse(post);
res.write(post.title);
res.write(post.text);
res.end();
});
}).listen(3000);
——————————
① 比如我们需要知道 HTTP 成功响应时要返回一个 200 状态码,而不需要手动完成“返回 200 状态码”这项工作。
但这不带表你可以轻易地切换到非 HTTP 协议,因为代码仍然是与 HTTP 协议耦合的。