我爱编程ThoughtWorkWeb 前端开发

100-days-Coding - day9

2018-08-12  本文已影响0人  亨利何

day9-0812

上次在用form做文件上传的时候,自己方便测试使用koa搭建了一个临时后台「其实很早之前就已经接触了,express的替代者,更轻量化,富中间件化

koa的使用虽然也只是简单的了解层面,不过还是get到一些不一样的事情

从一个简单的form表单引申出的都有什么呢?

细想一下,哇咔咔,还是有好多新坑需要填。


#1. koa的服务器开启

koa作为express的替代者,达到同样目的情况下给人一种简洁的美

const Koa = require('koa');
const app = new Koa();

const main = ctx => {
    ctx.response.body = 'serer ha, gotcha!'
}

app.use(main)

app.listen(3006, () => {
    console.log('server running ...')
})

#2. koa-body中间件

为了能够获取前端传来的form表单的数据你需要获取post data 或者是get parameters,来进行相应的处理

const Koa = require('koa');
const koaBody = require('koa-body');
const app = new Koa();


// 文件处理
const main = async function(ctx) {
  const files = ctx.request.body.files // get your files with body.files
};

app.use(koaBody({ multipart: true }));
app.use(main)

app.listen(3006, () => {
  
    console.log('server running ...')
})

#3. promise的使用

promise的语法糖真的是好甜!
使用promise的写法不仅可以更清楚的表达你的逻辑,更重要的是很

const queryMovie = (movie) => {
    return new Promise((resolve, reject) => {
        imdb.get({
            name: movie
            // id: 'tt3896198'
        }, {
            apiKey: OMDB_KEY_HONGWING,
            timeout: 30000
        }).then((res) => {
            // 数据正常就是 resolve
            resolve(res)
        }).catch((e) => {
           // 数据异常就是 reject
            reject(e)
        })
    })
    
}

#4. async & await 再次相遇

F.E.D始终逃不掉的就是异步 & 同步「 REASON 」Javascript with single thread
异步的常见的会有: 回调函数,发布订阅,时间驱动处理,和 promise


const movieQuery = async function (ctx) {
    const moviename = ctx.request.url.split('?')[1].split('=')[1]
    await queryMovie(moviename).then((res) => {
        console.log(res)
        ctx.body = res
    }).catch((e) => {
        ctx.body = e
    })
};

#5. imdb-api 相关

imdb-api是一个包,用于获取imdb提供的电影信息

The ant man

#End preference

上一篇下一篇

猜你喜欢

热点阅读