Feathers: рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдХреЛрдЖ рдФрд░ рд╣рд╛рдкрд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЦ рд╕рд░реНрд╡рд░ рдврд╛рдВрдЪреЗ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдорд╛рд░реНрдЪ 2016  ┬╖  22рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: feathersjs/feathers

рдЕрдм рдЬрдмрдХрд┐ рдлреЗрджрд░реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ https://github.com/phersjs/feeds/pull/193), рд╣рдореЗрдВ рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЛ рд╣рд╛рд░реНрдб рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдХреЛрдЖ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╣рд╛рдкреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рдХреА рддрд░рд╣ рд╣реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рд╡реНрдпрдХреНрдд рдХрд░рдирд╛

рдкрдВрдЦ 2 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рд╣реЛрдЧреА app.configure(express()) :

const feathers = require('feathers');
const express = require('feathers-express');

const app = feathers()
  // Make this app Express compatible
  .configure(express())
  // Configure REST API that uses Express
  .configure(express.rest());

// Use any Express middleware
app.use(bodyParser.json());
// Use Feathers services normally
app.use('/todos', {
  get(id) {
    return Promise.resolve({ id, description: `You have to do ${id}!` });
  }
});

рдХреЛрдЖ

рдХреЛрдЖ рдХрд╛ рд╕рдорд░реНрдерди рдХрдИ рдмрд╛рд░ рд╕рд╛рдордиреЗ рдЖрдпрд╛ (#83 рдФрд░ #58 рджреЗрдЦреЗрдВ)ред рдпрд╣ рдЕрдм рдмрд╣реБрдд рд╕рдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

const feathers = require('feathers');
const koa = require('feathers-koa');

const app = feathers()
  // Make this app Koa compatible
  .configure(koa())
  // Configure Koa REST handler
  .configure(koa.rest());

// Use normal Koa middleware
app.use(function *(){
  this.body = 'Hello World';
});

// Use a Feathers service through app.service
app.service('/todos', {
  get(id) {
    return Promise.resolve({ id, description: `You have to do ${id}!` });
  }
});
Breaking Change Feature Proposal

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдврд╛рдВрдЪреЗ рдХреЗ рдмрдЬрд╛рдп рдкрдВрдЦреЛрдВ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬреЛ рдЗрд╕реЗ рдкрд░рд┐рд╡рд╣рди рдкрд░ рднреА рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛ рджреЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг:

рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб
const feathersApp = feathers().configure(rest());
feathersApp.service('todos', new NeDB('todos'));
export default feathersApp;
рдлреНрд░реЗрдорд╡рд░реНрдХ-рд╡рд┐рд╢рд┐рд╖реНрдЯ

рдХреЛрдЖ

import feathersApp from './feathersApp';
import Koa from 'koa';
import adapter from 'feathers-koa';

const app = new Koa();
app.use(adapter(feathersApp));

рд╡реНрдпрдХреНрдд рдХрд░рдирд╛

import feathersApp from './feathersApp';
import express from 'express';
import adapter from 'feathers-express';

const app = express();
app.use(adapter(feathersApp));

рдореВрд▓ рд░реВрдк рд╕реЗ, рдПрдбреЗрдкреНрдЯрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдПрдВрдЧреЗред

рд╕рднреА 22 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рдмрд╛рдзрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реЛрдЧреА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдо рдХреИрд╕реЗ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛрдЖ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред

рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдХреЛрдЖ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рд╣рдореЗрдВ рдХреЗрд╡рд▓ req рдФрд░ res $ рдХреЗ рдмрдЬрд╛рдп https://github.com/rkusa/koa-passport-example рдФрд░ ctx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╣рд╛рдкреА рдХреЗ рд╕рд╛рде рдореИрдВ рдЗрддрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рд╛рдкреА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдХреБрдЫ рднреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдХреЛрдЖ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред

рдЖрдИрдПрдордПрдЪрдУ, рдЕрдЧрд░ рд╣рдо рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдврд╛рдВрдЪреЗ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рд╣рдо рд╢рд╛рдпрдж рд░реВрдЯрд┐рдВрдЧ, рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд░реНрддрд╛ рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдХреЛрдЖ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: https://github.com/koajs/koa.ioред

рдЖрдИрдПрдордПрдЪрдУ, рдЕрдЧрд░ рд╣рдо рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдврд╛рдВрдЪреЗ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рддреЛ рд╣рдо рд╢рд╛рдпрдж рд░реВрдЯрд┐рдВрдЧ, рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд░реНрддрд╛ рдЗрддреНрдпрд╛рджрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

http-framework ! :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

@ahdinosaur рд╣рд╛рдВ рдЬреЛ IMHO рдЬрд╛рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдврд╛рдВрдЪреЗ рдХреЗ рдмрдЬрд╛рдп рдкрдВрдЦреЛрдВ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬреЛ рдЗрд╕реЗ рдкрд░рд┐рд╡рд╣рди рдкрд░ рднреА рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛ рджреЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг:

рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб
const feathersApp = feathers().configure(rest());
feathersApp.service('todos', new NeDB('todos'));
export default feathersApp;
рдлреНрд░реЗрдорд╡рд░реНрдХ-рд╡рд┐рд╢рд┐рд╖реНрдЯ

рдХреЛрдЖ

import feathersApp from './feathersApp';
import Koa from 'koa';
import adapter from 'feathers-koa';

const app = new Koa();
app.use(adapter(feathersApp));

рд╡реНрдпрдХреНрдд рдХрд░рдирд╛

import feathersApp from './feathersApp';
import express from 'express';
import adapter from 'feathers-express';

const app = express();
app.use(adapter(feathersApp));

рдореВрд▓ рд░реВрдк рд╕реЗ, рдПрдбреЗрдкреНрдЯрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдПрдВрдЧреЗред

@daffl рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕реНрдкрд┐рд░рд┐рдЯ рдЪреЗрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдкрдВрдЦреЛрдВ рдХреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ред рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрдп рдХреЗ рд╕рд╛рде рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрдВрдЦреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛ рджреЗрдЧрд╛ред рдЗрд╕ рдкрд░ рдХреЛрдИ рдлреИрд╕рд▓рд╛?

рдпрд╣ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреАрдЖрд░ https://github.com/phersjs/phers-authentication/pull/336 рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдореБрдЦ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдиреАрдЪреЗ рд╡рд┐рднрд┐рдиреНрди рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдм рдЬрдм рд╣рдо рдФрдХ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрдЬрд╝рд░реНрдб рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдореЙрдбреНрдпреВрд▓рд░ рд╣реЛрдирд╛ рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдЗрд╕реЗ 70 рдорд┐рд▓рд┐рдпрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдЖ 1.4 рдорд┐рд▓рд┐рдпрди рдХреЗ рд╕рд╛рде рд╡рд╣реАрдВ рд╣реИ рдФрд░ рд╣рд╛рдкреА ~ 2.4 рдорд┐рд▓рд┐рдпрди рдХреЗ рд╕рд╛рде рд╣реИред

_рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо, рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА, рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рдЖрдХрд╛рд░ рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдлреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд┐рддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред_

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрдд рдХрд░реЗрдВред рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдг рд╣реЛрдВрдЧреЗ:

  • http2 рд╕рдорд░реНрдерди (рдЬреЛ рдЕрдВрддрддрдГ рдПрдХреНрд╕рдкреНрд░реЗрд╕ 5 рдореЗрдВ рдЖ рд░рд╣рд╛ рд╣реИ ....)
  • рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ред рдЬрдм рдЖрдк рдПрдХ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдПрдкреАрдЖрдИ рдпрд╛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ (рдкреНрд░рд╛рдердорд┐рдХ рдкрдВрдЦ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдХрдЪреНрдЪреЗ рдиреЛрдб http(s) рдпрд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рдиреНрдпреВрдирддрдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ
  • рднрд╡рд┐рд╖реНрдп рдХрд╛ рдкреНрд░рдорд╛рдг рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ
  • рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рдмрдирдирд╛, рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░, рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рдЖрджрд┐ рдХреЛ рд╕реНрд╡реИрдк рдХрд░ рд╕рдХреЗрдВред рдкрдВрдЦ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрд░ рдЯреЗрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рд┐рд░реНрдл рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдкреИрдЯрд░реНрди + рдпреВрдЯрд┐рд▓рд┐рдЯреА рд▓рд┐рдм рд╣реИред

рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ "рдЗрдВрдЬрди" рдХреЛрдЖ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕рдмрд╕реЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ ES6/ES7 рднрд╛рд╖рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдиреБрд░реЛрдзрд┐рдд рднреА рд▓рдЧрддрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдХрдЪреНрдЪреЗ рдиреЛрдб libs рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

  • [ ] рд╕рд╛рдорд╛рдиреНрдп рд╢реАрд░реНрд╖ рд╕реНрддрд░реАрдп рдкрдВрдЦ рдПрдкреАрдЖрдИ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдм рддрдХ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд╣рдо рдиреАрдЪреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрдиреНрдп рдЗрдВрдЬрди рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдБрдЧрд╛:

    const feathers = require('feathers');
    const app = feathers();
    
    // use by string name
    app.engine('express');
    
    // or pass the engine with string
    const koa = require('koa');
    app.engine('koa', koa);
    
    // or simply pass the engine. I like this best
    const koa = require('koa');
    app.engine(koa);
    

    рдпрд╣ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╡рд╣реА рд╣реИ рдЬреЛ @jeffijoe рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдкрдВрдЦ рдРрдк рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдХреНрд▓реАрдирд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрддрд╛рдирд╛ рдереЛрдбрд╝рд╛ рдЬрд▓реНрджреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рддрдм рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реАрдХреЗ рдЕрдкрдирд╛рдиреЗ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢реАрд░реНрд╖ рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ, рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

  • [ ] рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╡рд┐рдзрд┐рдпрд╛рдВ рдпрд╛ рддреЛ рдкреЙрд▓реАрдлрд┐рд▓реНрдб рд╣реИрдВ, рдЕрд▓рд┐рдпрд╛рд╕реНрдб рд╣реИрдВ рдпрд╛ рд╣рдо рдЙрди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред рдФрд░ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЗ рдКрдкрд░ рд╕реЗ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡реЗ рд╣реИрдВ:

    • app.get

    • app.set

    • app.render

    • app.send

    • app.json

    • req.accepts

    • req.xhr

  • [ ] рдСрдереЗрдВрдЯрд┐рдХ рдЗрдВрдЬрди/рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рдмрдирд╛рдПрдВ (https://github.com/phersjs/phers-authentication/pull/336)
  • [ ] рдЙрдкрдирд╛рдо/рдмрджрд▓реЗрдВ рдХрд┐ рд╣рдо рдЖрд░рдИрдПрд╕рдЯреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред
  • [ ] рдЙрдкрдирд╛рдо/рдмрджрд▓реЗрдВ рдХрд┐ рд╣рдо рд╕реЙрдХреЗрдЯ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ

рдФрд░ рднреА рдмрд╛рддреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред @daffl рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛, рдЦрд╛рд╕рдХрд░ рд╕реЙрдХреЗрдЯ/рдмрд╛рдХреА рд╕реЗрдЯрдЕрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ред

рдЕрдиреНрдп рдмрд╛рддреЗрдВ

  • рдХреНрдпрд╛ рд╣рдо рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреА рд╕рднреА HTTP рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдмрд╣реБрдд рдХреБрдЫ рд╣реИрдВ ред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛?
  • рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рди рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
  • рдЖрдк рдХреЛрд░ рдлреЗрджрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ app рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреМрди рд╕реЗ рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • рдПрдХреНрд╕рдкреНрд░реЗрд╕ 5 рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ? рдХреБрдЫ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рджреЗрдЦрд╛ред @Dougwilson рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдПрдХ рд╣рд╛рде рдЙрдзрд╛рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рд░рд╕реЛрдИ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд░рд╕реЛрдЗрдпрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред
  • рдХреНрдпрд╛ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреИрд╕реЗ @dougwilson рдпрд╛ рд╕реНрдкрд┐рд░рд┐рдЯрдЬ , http-framework рдЗрддреНрдпрд╛рджрд┐ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рд╣рдореЗрдВ рдХреЛрд░ рдиреЛрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЙрди рд╕рд╛рд░ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред
// or simply pass the engine. I like this best
const koa = require('koa');
app.engine(koa);

рдорд╛рдирд╛! рдЗрд╕ рддрд░рд╣, рд▓реЛрдЧ рдПрдХ рдмрд╛рд░ рдкрдВрдЦ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдбреЗрдкреНрдЯрд░ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░!

рдЪреБрдиреМрддреА рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣реИ рдЬреЛ рд╣реЗрдбрд░ рдЬреИрд╕реА рдХрдиреЗрдХреНрд╢рди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред

рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХреЛрдЖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░рдг рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ (рдЬрд┐рддрдирд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдирд╣реАрдВ рд╣реИ), рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдорд┐рдбрд▓рд╡реЗрдпрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд╣реИред

рдХреГрдкрдпрд╛ рдлреЗрджрд░реНрд╕ рдХреЛ рдПрдХ рдкрддрд▓реА рдПрдкреАрдЖрдИ рдЧреЗрдЯрд╡реЗ (рдХреНрд▓рд╛рд╕рд┐рдХ рд╡реЗрдм рд╕рд░реНрд╡рд░) рдФрд░ рдмреЗрд╡рдХреВрдл/рд╕рд░рд▓ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдХреЗрд╡рд▓ рд░реБрдЪрд┐ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрдирдирд╛ (рдпрд╛рдиреА рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрд╡рд┐рд╕ рдкреИрдЯрд░реНрди)ред рдлрд┐рд░ рд╣рдо рд╕реЗрдиреЗрдХрд╛ рдФрд░ рдЕрдиреНрдп рд▓реЛрдХрдкреНрд░рд┐рдп Node.js рдорд╛рдЗрдХреНрд░реЛ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рд╣рд╛рдБ, рдлреЗрджрд░рдЬреЗрдПрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдХреЛрдЖ, рд╣рд╛рдкреА, рдЬреЛ рднреА рд╣реЛ, рдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ...
рдореИрдВ рдЗрд╕реЗ HTTP2/рдкреБрд╢ рдХреЗ рд╕рд╛рде Nginx рдкрд░ рднреА рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ :)

рдЦреБрд╢реА рдХреЗ рджрд┐рди!

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ https://github.com/fastify/fastify рджреЗрдЦрд╛ рд╣реИ?

рдореИрдВ рдЗрд╕реЗ рдкрдВрдЦ рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ?

@andreafalzetti рдЕрднреА рднреА рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдЖрдк рдпрд╣рд╛рдВ рдХреБрдЫ рдкреНрд░рдЧрддрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/phersjs/phers-express/issues/3

рд╣рд╛рдБ, рдкрдВрдЦреЛрдВ рдХреЛ рдЙрдкрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдкрд░ рдореАрдард╛ рд╣реЛрдЧрд╛! рд╣реЛ рдЬрд╛рдП :)

рдореВрд▓ рдПрдХреАрдХрд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкреНрд░рдорд╛рдгреАрдХрд░рдг (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдФрд░ рдУрдПрде) рд╣реИ рдЬрд╣рд╛рдВ рдЪреАрдЬреЗрдВ рдмрд╛рд▓реЛрдВ рд╡рд╛рд▓реА рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдкрд░ рдХрдард┐рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдФрд░ v3 рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдереА рдХрд┐ рдПрдХреАрдХрд░рдг рдХреНрдпрд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ Fastify рдкрд░ рдПрдХ рдмрд╛рдд рджреЗрдЦреА рдереА рдФрд░ рдЬрдм рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рддреЛ рдпрд╣ рдкрдВрдЦ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде Nodes HTTP (рдФрд░ HTTP2!) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ Fastify рдореБрдЦреНрдп рдПрдХреАрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдПрдлрд╡рд╛рдИрдЖрдИ, рдореИрдВрдиреЗ рдкрдВрдЦ-рдХреЛрдЖ рдЖрд░рдИрдПрд╕рдЯреА рдПрдХреАрдХрд░рдг рдкрд░ рдкрдВрдЦ-рдмрд╛рдХреА-рдХреЛрдЖ рдореЗрдВ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдИрдПрд╕рдЯреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓/рдкреИрдХреЗрдЬ рдФрд░ рд░реЗрдкреЛ рдореЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛;)

рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА https://github.com/phersjs/phers-rest-client рдкрд░ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ: https://github.com/phersjs/phers-express/issues/3 @christopherjbaker рджреНрд╡рд╛рд░рд╛

рдкрдВрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ: 2018 рддрдХ рдкрдВрдЦ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╛ рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рдХреМрди рд╕реЗ рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдХреНрдпрд╛ рдХреЗрдУрдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж! рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ рдФрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@daffl рд╕реЗ рдкреВрдЫреЗрдВ, рд╡рд╣ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

рдкрдВрдЦ рдврд╛рдВрдЪрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ @ рдкрдВрдЦрдЬ/рд╕реЙрдХреЗрдЯрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдпрд╛ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП HTTP рдПрдкреАрдЖрдИ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИ ( @ рдкрдВрдЦрдЬ/рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдореЗрдВ)ред

рдЪреВрдВрдХрд┐ рдкрдВрдЦреЛрдВ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП HTTP рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛ рдЕрдВрддрддрдГ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рджреВрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЬреИрд╕реА рдмрд╣реБрдд рд╕реА рдФрд░ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдЪреАрдЬреЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдХрд╛рдо рд╣реИ (рд╕рднреА рдкрд╛рд╕рдкреЛрд░реНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╡рд░реНрддрдорд╛рди рдХреЛрдЖ рдПрдХреАрдХрд░рдг рдмрд╕ рдЙрд╕ рддрдереНрдп рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИрдХ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЗрд╕реЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреА рддрд░рд╣ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП)ред рдореЗрд░реЗ рд▓рд┐рдП рдирдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рд╛рджрд╛ рдиреЛрдб HTTP рд╣реЛрдЧрд╛ рдЬреЛ рдПрдХ рдирдИ рд╕реЗрд╡рд╛ рд▓реБрдХрдЕрдк рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде Fastify рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝ рдмрдирд╛ рджреЗрдЧрд╛ред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

arkenstan picture arkenstan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arve0 picture arve0  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

andysay picture andysay  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rstegg picture rstegg  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

intumwa picture intumwa  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ