zoukankan      html  css  js  c++  java
  • 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) + '
    ' )
    })
    
    //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')
    
  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    【转】Vitalik:Layer-1 短期求创新,长期求保守
    扩容解决方案:状态通道
    以太坊的存储成本
    扩容解决方案:侧链
    区块链:Layer0 通用可扩展性解决方案
    实战演练丨Oracle死锁案例分析,看完你就懂了
  • 原文地址:https://www.cnblogs.com/littlepage/p/12181436.html
Copyright © 2011-2022 走看看