express简要代码简读
express 是一个js的web框架,对http库进行了二次封装。下面是一段精简简要解读,带注释。
依赖npm外部库:express、body-parser、multer
body-parser是一个进行解析request的body段区域的js库
multer是一个进行解析文件upload的库
使用这三个库,会使js web开发变得更加优雅
var express = require('express');//express模块,需要安装
var bodyParser = require('body-parser');//body-parser模块,需要安装,解析body
var fs = require('fs');//fs模块
var multer = require('multer')//multer模块,需要安装
/**
访问目录,如果没有,则创建
*/
var createFolder = (folder)=>{
try{
fs.accessSync(folder);
}catch(e){
fs.mkdirSync(folder);
}
}
//定义uploadFolder
var uploadFolder = './upload/';
//调用访问目录函数
createFolder(uploadFolder);
//调用存储
var storage = multer.diskStorage({
destination : function(req,file,cb){
cb(null,uploadFolder)
},
filename: function(req,file,cb){
cb(null,file.originalname)
}
})
//设置multer的存储路径
var upload = multer({storage: storage});
//启动express
var app = express()
//使用bodyParser解析头部
app.use(bodyParser.urlencoded({ extended:false }))
//使用bodyParser解析json
//app.use(bodyParser.json())
//post表单文件是commonfile,上传enctype="multipart/form-data"
app.post('/upload',upload.single('commonfile'),(req,res)=>{
console.dir(req.body)
res.send({'ret_code':0});
})
//get表单文件,使用fs进行发送
app.get('/form',(req,res)=>{
res.sendFile(__dirname + '/form.html');//这句话与下面两句话等价
//var form = fs.readFileSync('./form.html',{encoding:'utf8'});
//res.send(form)
})
//post 使用JSON.stringify解析
app.post('/',(req,res)=>{
console.dir(req.query);
console.dir(req.body)
res.send("post method: " + JSON.stringify(req.query) + '\n' )
})
//get 发送头部param的find属性
app.get('/',(req,res)=>{
console.dir(req.query);
res.send("home page: " + req.query.find)
})
//get 发送OBJ或者动态ID属性
app.get('/profile/:id',function(req,resp){
var jsonObj = {
name: "steve",
age: '18'
}
// resp.send(jsonObj);
// resp.json(jsonObj);
console.dir(req.params);
console.dir(jsonObj);
resp.send("your request to see profile with id of " + req.params.id)
})
//监听端口
app.listen(8080);
console.log('listening to port 8080')