1、使用http模塊
Nodejs不需要另外的HTTP服務器,因此減少了一層抽象,性能有了不少的提升,但同時也提高了開發難度,下面用一個post案例,來理解Nodeweb的運行流程
<span style="font-size:18px;"><form method="post" action="http://127.0.0.1:3000">
<input type="text" name="title"/>
<textarea name="text"></textarea>
<input type="submit"/>
</form></span>
這個表單包含兩個字段,title和text,提交的方式是post,將數據以post的方式提交給http://127.0.0.1:3000/。假設該案例的功能是將提交的數據原封不動的返回給頁面。
則服務端的實現代碼如下:
var http = require('http');
var util = require('util');
var queryString =require('querystring');
http.createServer(function(req,res){
var post ='';
req.on('data',function(chunk){
post+=chunk;
});
req.on('end',function(){
post= queryString.parse(post);
res.end(util.inspect(post));
console.log(post);
});
}).listen(3000);
實現效果如下:
客戶端:post數據
服務端返回的數據
也可以用這種方式返回數據
post= queryString.parse(post);//查詢post數據
res.write(post.title);
res.write(post.text);
res.end();//必須寫,否則無法返回
2、Express模塊
Express模塊是Nodejs作爲一個web框架,也是官方唯一推薦的一個框架,Express除了爲Http提供高層接口外,還實習了許多其他的功能。
2.1 路由控制
2.2模板解析支持
2.3動態視圖
2.4用戶會話
2.5CSRF保護
2.6靜態文件服務
2.7錯誤控制器
2.8訪問日誌
2.9緩存
2.10插件支持
下面用Express重新實現前面的例子
var express=require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser());
app.all('/',function(req,res){
res.send(req.body.title+req.text);
console.log(req.body.title);
});
app.listen(3000);
可以看到不需要req的監聽事件,只需要express.bodyParser(),就能直接通過req.body獲取post數據