Node.js实践第一天
实践案例一 表单提交
demo.html
1 <!doctype html> 2 <html> 3 <head> 4 <title>表单提交</title> 5 </head> 6 <body> 7 <form method="post" action="http://localhost:3000/"> 8 姓名:<input type="text" name="title" /><br/><br/><br/> 9 备注:<textarea name="text"></textarea><br/> 10 <input type="submit"/> 11 </form> 12 </body> 13 </html>
postdata.js
1 //post form 2 3 var http = require('http'); 4 var querystring = require('querystring'); 5 6 var server = http.createServer(function(req,res){ 7 var post = ''; 8 9 req.on('data',function(chunk){ 10 post += chunk; 11 }); 12 13 req.on('end',function(){ 14 post = querystring.parse(post); 15 16 res.write(post.title); 17 res.write(post.text); 18 res.end(); 19 }); 20 }).listen(3000);
在使用dos窗口运行js的时候记得把http,querystring两个模块使用npm install -g xxx到本地。
cd到上述文件的目录,运行命令
node postdata.js
运行效果图
提交结果显示界面
思考:PHP获取POST提交的数据并将数据返回给用户,仅仅写两行代码,
echo $_POST['title'];
echo $_GET['text'];
而Node.js完成以上工作需要先创建一个HTTP实例,手动编写req对象的事件监听器,当客户端数据到达时,将POST数据暂时存在闭包的变量中,直到end事件触发,解析post请求,处理后返回到客户端。php之所以简单,是因为它已将这些功能封装好了,只提供了一个高层的接口。此处实例虽然直接使用了http模块,但是却不是让你直接使用这个模块进行web开发,http模块仅仅是一个HTTP服务器内核的封装,你可以用它做任何HTTP服务器能做的事情,不仅仅是做一个网站,甚至实现一个HTTP代理服务器。如果直接使用这种方法开发网站,必须手动实现所有东西。
Express 框架 一个轻量级的Web框架
npm 提供了大量的第三方模块,其中Express作为开发框架,是目前最稳定的、使用最广泛的框架。
Express(http://expressjs.com/)除了为http模块提供了更高层的接口外,还实现了许多功能,其中包括:路由控制,模板解析支持,动态视图,用户会话,CSRF保护,静态文件服务,错误控制器,访问日志,缓存,插件支持等,多数功能只是对HTTP协议中常用的操作封装,更多的功能需要插件或者整合其他模块来完成。
实现与之前相同的例子。
var express = require('express'); var app = express.createServer(); app.use(express.bodyParser()); app.all('/',function(req,res){ res.send(req.body.title+req.body.text); }); app.listen(3000);