рдЕрдм рдЬрдмрдХрд┐ рдлреЗрджрд░реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ 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}!` });
}
});
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рдмрд╛рдзрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реЛрдЧреА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдо рдХреИрд╕реЗ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд╕рдкреЛрд░реНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛрдЖ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдпрд╣ рдХреЛрдЖ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рд╣рдореЗрдВ рдХреЗрд╡рд▓ 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));
рдореВрд▓ рд░реВрдк рд╕реЗ, рдПрдбреЗрдкреНрдЯрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдПрдВрдЧреЗред
рдиреЛрдЯ: https://github.com/spirit-js/spirit
@daffl рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕реНрдкрд┐рд░рд┐рдЯ рдЪреЗрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдкрдВрдЦреЛрдВ рдХреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ред рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕реЗ рдЕрд▓рдЧ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдирдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЙрджрдп рдХреЗ рд╕рд╛рде рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкрдВрдЦреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛ рджреЗрдЧрд╛ред рдЗрд╕ рдкрд░ рдХреЛрдИ рдлреИрд╕рд▓рд╛?
рдпрд╣ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреАрдЖрд░ https://github.com/phersjs/phers-authentication/pull/336 рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдореБрдЦ рдЯреБрдХрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдиреАрдЪреЗ рд╡рд┐рднрд┐рдиреНрди рдврд╛рдВрдЪреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдм рдЬрдм рд╣рдо рдФрдХ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрдЬрд╝рд░реНрдб рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдЙрдкрдпреЛрдЧ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдореЙрдбреНрдпреВрд▓рд░ рд╣реЛрдирд╛ рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рдЗрд╕реЗ 70 рдорд┐рд▓рд┐рдпрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдЖ 1.4 рдорд┐рд▓рд┐рдпрди рдХреЗ рд╕рд╛рде рд╡рд╣реАрдВ рд╣реИ рдФрд░ рд╣рд╛рдкреА ~ 2.4 рдорд┐рд▓рд┐рдпрди рдХреЗ рд╕рд╛рде рд╣реИред
_рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо, рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА, рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЗ рдЖрдХрд╛рд░ рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдлреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рдХрд┐рддрдиреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред_
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрдд рдХрд░реЗрдВред рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдг рд╣реЛрдВрдЧреЗ:
рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ "рдЗрдВрдЬрди" рдХреЛрдЖ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕рдмрд╕реЗ рд╕рдорд╛рди рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ 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
рдФрд░ рднреА рдмрд╛рддреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред @daffl рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛, рдЦрд╛рд╕рдХрд░ рд╕реЙрдХреЗрдЯ/рдмрд╛рдХреА рд╕реЗрдЯрдЕрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ред
app
рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреМрди рд╕реЗ рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред// 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 рдХреЗ рд╕рдорд╛рди рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдФрд░ рднреА рддреЗрдЬрд╝ рдмрдирд╛ рджреЗрдЧрд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдврд╛рдВрдЪреЗ рдХреЗ рдмрдЬрд╛рдп рдкрдВрдЦреЛрдВ рдХреЛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдЬреЛ рдЗрд╕реЗ рдкрд░рд┐рд╡рд╣рди рдкрд░ рднреА рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдмрдирд╛ рджреЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг:
рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб
рдлреНрд░реЗрдорд╡рд░реНрдХ-рд╡рд┐рд╢рд┐рд╖реНрдЯ
рдХреЛрдЖ
рд╡реНрдпрдХреНрдд рдХрд░рдирд╛
рдореВрд▓ рд░реВрдк рд╕реЗ, рдПрдбреЗрдкреНрдЯрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рдПрдВрдЧреЗред