• koa2 的使用方法:(一)


    1. koa2 使用方法:

    1.  安装指令是: npm install koa2
    2. 使用koa2 创建项目工程:

    1.  koa2  (项目工程)
    2.  进入项目工程:  cd  进入您所创建的项目工程
    3.  npm   install   // 安装项目依赖;
    4.  npm  start      //  启动项目
    

      

    2. async 和 await:

    1. async (异步)

       

       async function test (){
           return 'Hello async'
       }
       const result = test()
       console.log(result)
      

        

    2. await (等待)

      ​
      /**
      *  await 等待async方法执完毕;
      *  注释: await 必须在async方法中可以使用因为await访问本身就会造成程序堵塞:
      **/
      function getDate(){
          return 'xixihehe';
      }
      async function testAsync(){
          return "Hello async"
      }
      async function test(){
          const va = await getDate()
          const vb = await testAsync()
          console.log(va, vb)
      }
      test();
      

        

    3. await 和 async同时使用:

      function Date (){
          return new Promise (resolve=>{
              setTimeoit(()=>resolve('log_time_value'),10000)
          })
      }
      async function test(){
          const v = await Date()
          console.log(v)
      }
      test()
       
      

        

    3. koa2 路由 :

    1. koa2 使用路由必须要安装模块:

    // 安装路由的命令提示框的指令是:
    npm  install --save koa-router
    //==================================================
     const koa = require("koa")
     //引入路由
     const  router = require("koa-router")
     const app = new Date()
     router.get('/',(ctx,next)=>{
         ctx.body='Hello koa'
     })
    router.get('/news',(cty,next)=>{
        cty.body='新路由'
    })
    //启动路由;
    app.use(router.routes())
    //作用: 可以看到router,allowedMethods()用在了路由匹配router.routeres()之后,所以在但所有路由中间最后调用,此时根据ctx,status,设置,response 相应头
    app.use(router.allowedMethods())
    app.listen(3000,(err)=>{
        if(!err){
            console.log("SERVER CREATE SCCESS! ")
        }
    })
    

      

    1. get 路由传值:

       const koa = require("koa")
       const Router = require("koa-router")
       const app = new koa()
       const router = new router()
       router.get('/',(ctx,next)=>{
           ctx.bocy ='Hellp koa'
       })
      router.get('/users',(ctx,next)=>{
          let url = ctx.url;
          //从requset中获取get请求
          let req_query = request.query
          let req_quertString = request.queryString;
          //从上下文直接获取
          let ctx_query = ctx.query;
          let ctx_queryString = ctx.queryString;
          crx.body={
              url,
              req.query,
              req_queryString,
              ctx.query,
              ctx.queryString,
          }
      })
      app.use(router.routes())
      app.use(router.allowedMethods())
      app.listen(3000,(err)=>{
          if(!err){
              console.log("SERVER CREATE SCCESS! ")
          }
      })
       
      

        

    2. koa动态添加路由

       
      // 请求方式: http:// 域名/ user/123
      router.get('/users/:aid',async(ctx)=>{
          console,log(ctx.mparams)// {aid:"123"} //获取动态路由的数据
           ctx.body='商品页面';
       })
      

        

    4. 中间件:

    1. 应用级中间件:

    const koa = require('koa')
    const Router = require('koa-router')
    const app = new koa();
    const router = new Router()
    app.use(async(ctx,next)=>{
        console.log(new Date())
        awaait next()
    })
    router.get('/',(ctx,next)=>{
        ctx.body='Hello koa'
    })
    router.get("/users",(ctx,next)=>{
        ctx.body='路由'
    })
    app.use(router.routes())
    app.use(router.allowedMethods())
    app.listen(3000,(err)=>{
        if(!err){
            console.log("SERVER CREATE SCCESS! ")
        }
    })
    

      

    2.路由中间件:

    1.  router.get('/',(ctx,next)=>{
           console.log(1)
           next();
       })
      router.get('/',(ctx)=>{
          ctx.body='Hello koa'
      })
      

      3.错误处理中间件:

    1  app.use(async,(ctx,next)=>{
    2      next();
    3      if(ctx,status==404){
    4          ctx.sttaus=404;
    5          ctx.body='错误页面!'
    6      }
    7  })
    1. 第三放中间件

      1  const static = require("koa-static")
      2  const staticPath = './static';
      3  app.use(static{
      4         path.join(_dirname,staticPah)
      5          })
      6  const bodyParser = require("koa-bodyparser");
      7 app.use(bodyParser)
      8  
    2. koa-bodyparser 中间件:

      安装 koa-bodyParser 模块的指令是: npm install --save koa-bodyParser

       

       

    3. 安装koa-bodyparser 引入配置中间件

      1 var koa = require('koa')
      2 var bodparser = require('koa-bodyparser')
      3 var app = new koa()
      4 app.use(bodyparser())
      5 app.use(async ctx=>{
      6     ctx.body= ctx.request.body
      7 })
      8  
    4. koa-static 静态资源 中间件

      安装 koa-static的指令是:

      npm install --save koa-static

    5. 引入配置文件:

       const static = require('koa-static')
      app.use(static(path.join(_dirname).'public'))

      5. Session koa-session的使用

    6. session 和 cookie 的区别:

      session是一种记录客户状态的机制,和cookie不同发是,cookie 是保存在客户端的浏览器中,而 session是保存在服务器上的,

    7. 安装指令是:

      • npm install koa-session --save

         

         1  // 引入session
         2 const session = requure('koa-session')
         3 // 设置中间件
         4 app.keys = ['some secret hurr'];
         5 const CONFIG = {
         6    key: 'koa:sess',   //cookie key (default is koa:sess)
         7    maxAge: 86400000,  // cookie的过期时间 maxAge in ms (default is 1 days)
         8    overwrite: true,  //是否可以overwrite    (默认default true)
         9    httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true)
        10    signed: true,   //签名默认true
        11    rolling: false,  //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
        12    renew: false,  //(boolean) renew session when session is nearly expired,
        13 };
        14 app.use(session(CONFIG, app));
        15 // 使用
        16      设置值 ctx.session.username = '柚子小哥哥!';
        17      获取值 ctx.session.username

    6. ejs:

    1. 安装 koa-views 和 ejs

      1. 安装 koa-views :

      npm install --save koa-views

      1. 安装ejs :

      npm install ejs --save

    2. 引入koa-views 胚珠中间件

       const views = require('koa-views')
       app.use(views('views',{map:{html:'ejs'}}))
      

        

    3. 使用ejs 

    4.  router.get('/add',async(ctx){
                  let title = 'hello koa2'
          await ctx.render(index',{
              title
         {}
      

        

  • 相关阅读:
    cocos2d-x 3.0rc1 编译cpp-testsproject
    [wxWidgets]_[0基础]_[不常见但有用的类wxStandardPaths]
    教你摆脱低级程序猿 项目中cocopads的安装使用
    Android使用代码模拟HOME键的功能
    UVA 1508
    asp.net mvc5 安装
    Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
    crm操作产品实体
    BZOJ 3172 [Tjoi2013]单词 AC自己主动机(fail树)
    ADO与ADO.Net
  • 原文地址:https://www.cnblogs.com/yjzs/p/12588246.html
Copyright © 2020-2023  润新知