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')
posted @ 2020-01-11 22:46  SteveYu  阅读(244)  评论(0编辑  收藏  举报