美文网首页
koa2入门

koa2入门

作者: noyanse | 来源:发表于2018-08-02 23:16 被阅读0次

    github: https://github.com/noyanse1023/learn-koa2019.git
    koa 断点调试:
    在vscode中在要调试的文件界面按下F5就启动了
    mac 小技巧
    https://www.cnblogs.com/hongrunhui/p/5928833.html
    参考:https://segmentfault.com/a/1190000009494041

    1.初始化项目

    1.mkdir koa //新建koa文件夹
    2.cd koa 
    3.npm init //初始化
    4.npm install koa --save
    

    2.执行简单的demo

    1.touch main.js //新建main.js文件
    2.在main.js中输入:
    const Koa = require('koa');
    const app = new Koa();
    
    app.use(async ctx => {
      ctx.body = 'Hello World';
    });
    
    app.listen(3000);
    3.执行node main.js
    

    可以安装热nodemon 自动编译

    npm i nodemon --save-dev
    在package.json中写
      "scripts": {
        "start": "nodemon index.js"
      },
    执行 npm start 就可以自动编译啦~~
    

    3.搭建路由与Controller

    Koa本质上是调用一系列的中间件,来处理对应的请求,并决定是否传递到下一个中间件去处理。我们来写一个最简单的中间件试试。

    /*
    //main.js代码
    app.use(async ctx => {
      ctx.body = 'Hello World';
    });
    */
    //改成
    app.use(ctx => {
        ctx.body = `Your website url is:${ctx.request.url}`
    })
    
    • 这段代码中,app.use 的 function 就是最简单的一个中间件,接受了请求,读出请求路径,并返回到客户端。
    • 所以,接口的本质,就是判断不同的请求链接,干不同的事情,返回相应的结果。那么我们得需要一个路由中间件koa-router来处理分发请求
      npm install koa-router --save //安装路由中间件
      main.js:
    const Koa = require('koa')
    const Router = require('koa-router')
    const app = new Koa()
    const router = new Router()
    
    router.get('/', ctx => {
      ctx.body = `这是主页`
    })
    
    router.get('/user', ctx => {
      ctx.body = `这是user页`
    })
    
    router.get('/post', ctx => {
      ctx.body = ctx.request.body
    })
    
    router.get('/async', async ctx => {
      const sleep = async (ms) => {
        return new Promise(resolve => {
          setTimeout(() => {
            resolve(true)
          }, ms)
        })
      }
      await sleep(1000)
      ctx.body = `这是异步处理页`
    })
    
    app
      .use(router.routes())
      .use(router.allowedMethods())
    
    app.listen(3000)
    

    处理 post请求,要用中间件bodyparser

    npm install koa-bodyparser --save
    

    做一下模块化处理

    -koa
      -node_modules
      -controller
        user.js
      -main.js
      -router.js
      -package.json
    

    main.js:

    const Koa = require('koa');
    const bodyParser = require('koa-bodyparser')
    const app = new Koa();
    const router = require('./router')
    
    app.use(bodyParser())
    
    app
        .use(router.routes())
        .use(router.allowedMethods())
        
    app.listen(3000);
    console.log('server is running at port 3000......')
    

    routers:

    const Router = require('koa-router')
    const router = new Router()
    const user = require('./controller/user')
    
    router.post('/user/login',user.login)
    router.get('/user/profile',user.profile)
    
    module.exports = router
    

    controller/user.js:

    const sleep = async (ms) => {
        return new Promise(reslove => {
            setTimeout(() => {
                reslove(true)
            })
        },ms)
    }
    module.exports = {
        login(ctx) {
            ctx.body = {
                username: ctx.request.body.username
            }
        },
        async profile(ctx) {
            await sleep(1000)
            ctx.body = {
                username: '学长',
                sex: 'man',
                age: '27'
            }
    
        }
    }
    

    相关文章

      网友评论

          本文标题:koa2入门

          本文链接:https://www.haomeiwen.com/subject/eolevftx.html