Node.js Express框架
一、Express 介绍
Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序。 它有助于基于Node Web应用程序的快速开发。Express框架的核心功能是:
- 允许设立中间件响应HTTP请求
- 定义了用于执行基于HTTP方法和URL不同动作的路由表
- 允许动态渲染基于参数传递给模板HTML页面
二、安装Express
安装Express 框架全局使用NPM,以便它可以被用来使用Node终端创建Web应用程序。
$ npm install express --save
上面的命令在本地node_modules目录保存安装,并创建一个目录express在node_modules里边。还有,应该使用express安装以下几个重要的模块:
u body-parser - 这是一个Node.js中间件处理JSON,Raw,文本和URL编码的表单数据
u cookie-parser - 解析Cookie头和填充req.cookies通过cookie名字键控对象
u multer - 这是一个Node.js的中间件处理multipart/form-data
$ npm install body-parser --save
$ npm install cookie-parser --save
$ npm install multer --save
三、Hello world 示例
一个非常基本的Express应用程序,它会启动服务器,并侦听端口3000等待连接。这个应用程序使用"Hello World! "回应!为请求网页。 对于所有其他路径,这将响应一个404表示未找到。
1、在F:\nodejs下新建server.js文件:
var express = require('express');
var app = express();
app.get('/',function(request,response){
response.send("Hello World");
});
var server = app.listen(8081,function(){
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s",host,port);
})
2、在node.js command prompt窗口下运行server.js文件
3、在浏览器中访问http://localhost:8081/
四、GET 方法:通过使用HTML表单使用GET方法传递两个值
1、前端页面(index.html)
<body>
<form action="http://127.0.0.1:8082/process_get" method="GET">
First Name:
<input type="text" name="first_name">
<br><br>
Last Name:
<input type="text" name="last_name">
<br><br>
<input type="submit" value="Submit">
</form>
</body>
2、server.js:
var express = require('express');
const { response } = require('express');
var app = express();
app.get('/index.html',function(request,response){
response.sendFile(__dirname+"/"+"index.html");
});
app.get('/process_get',function(req,res){
let response = {
first_name:req.query.first_name,
last_name:req.query.last_name
};
console.log(req.query.first_name);
res.end(JSON.stringify(response));
});
var server = app.listen(8082,function(){
var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s",host,port);
})
五、POST 方法:通过使用HTML表单POST方法提交两个值
1、前端页面(index.html):
<body>
<form action="http://127.0.0.1:8081/process_post" method="POST">
First_Name:
<input type="text" name="first_name">
<br><br>
Last_Name:
<input type="text" name="last_name">
<br><br>
<input type="submit" value="Submit">
</form>
</body>
2、服务文件(server.js)
var express = require('express');
var app = express();
var bodyParse = require('body-parser');
var urlencodeParser = bodyParse.urlencoded({extended:false});
app.use(express.static('public'));
app.get('/index.html',function(req,res){
res.sendFile(__dirname+"/"+"index.html");
})
app.post('/process_post',urlencodeParser,function(req,res){
let response = {
first_name:req.body.first_name,
last_name:req.body.last_name
};
console.log(response);
res.send(JSON.stringify(response));
})
var server = app.listen(8081,function(){
var host = server.address().address
var post = server.address().port
console.log("Example app listening at http://%s:%s",host,post);
})
六、文件上传:在HTML代码创建一个文件上传表单。提交方法设置为POST,以及enctype属性设置为 multipart/form-data
1、上传页面(up.html)
<body>
<form action="http://127.0.0.1:8081/file_upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
2、服务器代码(upload.js)
var express = require('express');
var app = express();
var fs = require("fs");
var bodyParser = require('body-parser');
var multer = require('multer');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}));
app.use(express.static('public'));
app.use(bodyParser.urlencoded({extended:false}));
app.use(multer({dest:'/tmp/'}));
app.get('/up.html',function(req,res){
res.sendFile(__dirname+"/"+"up.html");
})
app.post("/file_upload",function(req,res){
console.log(req.files.file.name);
console.log(req.files.file.path);
console.log(req.files.file.type);
var file = __dirname+"/"+req.files.file.name;
fs.readFile(req.files.file.path,function(err,data){
fs.writeFile(file,data,function(err){
if(err){
console.log(err);
}else{
response = {
message:'File upload successfully',
filename:req.files.file.name
};
}
console.log(response);
res.end(JSON.stringify(response));
});
});
})
var server = app.listen(8081,function(){
var host = server.address().address;
var port = server.address().port;
console.log("Example app listening at http://%s:%s",host,port);
})
七、Cookies 管理:可以发送cookie来Node.js加载服务器,它可以处理使用下面的中间件选项。下面是一个简单的例子来打印所有客户端发送的cookie。
var express = require('express')
var cookieParser = require('cookie-parser')
var app = express()
app.use(cookieParser())
app.get('/', function(req, res) {
console.log("Cookies: ", req.cookies)
})
app.listen(8081)