koa 중간부품 레코드

5176 단어
1. koa의 오류 처리
  • koa-onerror koa에 error 이벤트가 있습니다. 오류가 발생하면 error 이벤트를 통해 오류를 통일적으로 처리할 수 있습니다.
  • var Koa = require('koa');
    var app = Koa();
    app.on('error', function(err,ctx){
        console.log(err);
    });   
    app.listen(3000);
    

    위의 코드는 오류가 발생하면 페이지에서 "Internal Server Error"(Koa 오류에 대한 기본 처리)를 인쇄합니다.이 오류는 종합 모니터링 시스템에서도 자주 볼 수 있지만, 우리는 이 로그에 근거하여 어떤 정보를 얻을 수 없을 것이다.
    TypeError: Cannot read property 'split' of undefined
    at Object.Home.index (d:\test\route\home.js:143:31)
    at GeneratorFunctionPrototype.next (native)
    at Object.dispatch (d:\test
    ode_modules\koa-router\lib\router.js:97:44) at GeneratorFunctionPrototype.next (native)

    이러한 오류 정보는 어떻게 보고된 것입니까? 사실은 Koa-onerror 중간부품입니다. 오류 정보를 최적화하여 오류 정보에 따라 오류를 더욱 잘 포착할 수 있습니다.
    var onerror = require('Koa-onerror');
        onerror(app);
    

    일지
  • koa-logger
  • app.use(require('koa-logger'));
    
  • log4js log4js는 여러 개의 로그 등급 분류를 제공하고console를 대체할 수 있습니다.log 출력.또한 파일 크기나 날짜에 따라 로컬 로그 파일을 만들 수 있고 메일 등 형식으로 로그를 보낼 수 있다.

  • 사용법:http://www.jianshu.com/p/6b816c609669(version<2.0)
    3. 데이터 분석 요청
    1、koa-bodyparser
    바디를 해석하는 데 사용한다. 예를 들어post를 통해 폼, json 또는 파일을 전달하면 데이터를 쉽게 얻을 수 없다.koa-bodyparser를 통해 분석한 후koa에서this.바디는 데이터를 얻을 수 있습니다.
    json,form,text 형식 지원
    사용법:
    const bodyparser = require('koa-bodyparser');
    app.use(bodyparser({
      enableTypes:['json', 'form', 'text']
    }))
    

    매개변수:
  • disableBodyParser, 변환 없이 동적으로 설정 가능
  • app.use(async (ctx, next) => {
      if (ctx.path === '/disable') ctx.disableBodyParser = true;
      await next();
    });
    app.use(bodyparser());
    
  • onerror, 사용자화 설정 변환 오류 처리
  • app.use(bodyparser({
      onerror: function (err, ctx) {
        ctx.throw('body parse error', 422);
      }
    }));
    

    2、koa-multer
    multipart/form-data 형식 분석
    const multer = require('koa-multer');
    app.user(multer());
    

    4. 경로 처리
    1,koa-router①기본용법:
    var router = require('koa-router')();
    router.get('/', function(ctx, next){
      ...
    });
    
    app
      .use(router.routes())
      .use(router.allowedMethods());
    

    ② router.get/post/put/del/all
    router
      .get('/', function (ctx, next) {
            ctx.body = 'Hello World!';
      })
      .post('/users', function (ctx, next) {
      })
      .put('/users/:id', function (ctx, next) {
      })
      .del('/users/:id', function (ctx, next) {
      })
      .all('/users/:id', function (ctx, next) {
      });
    

    ③다중 미들웨어
    router.get(
      '/users/:id',
      function (ctx, next) {
        return User.findOne(ctx.params.id).then(function(user) {
          ctx.user = user;
          return next();
        });
      },
      function (ctx) {
        console.log(ctx.user);
        // => { id: 17, name: "Alex" }
      }
    );
    

    기타
    1. koa-json의 아름다운 출력 JSON response의 Koa 중간부품은 두 가지 사용 방식이 있다. 하나는 항상 미화된 json 데이터를 되돌려주는 것이다.
    const json = require('koa-json');
    app.use(json());
    

    다른 하나는 기본적으로 미화하지 않지만 주소 표시줄에서pretty 인자를 전송할 때 되돌아오는 결과는 미화되었다.
    app.use(json({ pretty: false, param: 'pretty' }));
    

    2. koa-static는 koa의 정적 파일에 맵 경로를 지정합니다.
    const staticServe = require('koa-static');
    app.use(staticServe(root, opts));
    

    매개변수: ① root: 정적 파일의 루트 디렉토리 ② opts:
  • maxage 브라우저 캐시의 최대 시간(max-age), 단위는milliseconds(ms)입니다.기본값은 0
  • hidden은 숨겨진 파일을 전송할 수 있습니다. 기본값은false
  • 입니다.
  • index Default file name, defaults to ‘index.html’
  • defer If true, serves after yield next, allowing any downstream middleware to respond first.
  • gzip은 클라이언트가 gzip을 지원하고 요청한 파일도 있습니다.gz가 확장자 파일일 때 요청한 파일에 자동으로 대응합니다.gz 파일을 반환합니다.기본값은 true
  • 입니다.
  • extensions Try to match extensions from passed array to search for file when no extension는 합격 in URL.First found is served. (defaults to false)

  • 3. 뷰의 렌더링 템플릿 유형을 지정하는 데 koa-views 사용
    app.use(views(__dirname + '/views', {
        extension: 'jade',
        map: {
            html: 'underscore'
        },
        engineSource: {
            foo: () => Promise.resolve('bar')
        },
        options: {
            helpers: {
                uppercase: (str) => str.toUpperCase()
            },
            partials: {
                subTitle: './my-partial' // requires ./my-partial.hbs
            }
        }
    }));
    

    매개 변수: ① 루트,view 파일의 절대 경로를 표시합니다. (여기는 상대 경로를 사용할 수 없습니다.)② opt, 여기에는 네 가지 구성 항목이 포함되어 있습니다.
  • extension,view 파일의 기본 접미사 이름을 가리키는 데 사용됩니다.
  • map은 접미사 이름이 어떤 종류의 파일을 어떤 엔진으로 처리하는지 가리킨다.전례에서 접미사를 가리키다.html 파일은 underscore 엔진으로 처리됩니다.
  • engineSource는 접미사 이름이 특정한 형식의 파일을 모enginesource로 처리하고 기본적인enginesource인consolidate를 대체합니다.상례에서 모든 것을 표시하다.foo를 접미사로 하는 파일은'bar'로 되돌아옵니다.
  • options, 이것은 helpers와partials에 전달되는 곳입니다. 이 options는view engine에 전달됩니다.

  • koa-views의 debug 모드를 엽니다: koa 서비스를 시작할 때 DEBUG=koa-views 환경 변수를 추가합니다.

    좋은 웹페이지 즐겨찾기