Koa по-прежнему тот же Koa, но Nodejs уже не тот Nodejs

Node.js

однажды

Когда-то, за несколько дней до Nodejs 8, нас до смерти замучил механизм обратного вызова JS, и сказать «любовь» было не так-то просто. А появление Коа, особенно модуля со, заставляет поторопиться. Простой стиль кода, эффективная производительность и новый синтаксис, который может использовать JS. Это тоска большинства JSer. Как представил Koa [Выразительное промежуточное ПО для node.js с использованием асинхронных функций ES2017]

Сейчас

С появлением Nodejs 10 нам больше не нужно использовать [--harmony], и одно из больших преимуществ Koa больше не является преимуществом.

представление?

Благодаря версии V8 6.0+ производительность Express также стала соответствовать Koa. Вот тестовый код:

// version 2.11.0
const Koa = require('koa');
const app = new Koa();

app.use(ctx => {
  ctx.body = 'Hello Koa';
});

app.listen(3000);
// version 4.17.1
const express = require('express');
const app = express();

app.use((req, res) => {
  res.end('hello express');
})

app.listen(3000);

См. следующие данные (MacOS10.12.6, Nodejs v10.17.0):

Рамка количество запросов параллелизм QPS запросы в секунду Среднее время до TPR
Koa 5000 100 5500 - 6400 14-18ms
Koa 5000 200 6500 - 7700 26-35ms
express 5000 100 5300 - 6100 16-20ms
express 5000 200 5700 - 7600 24-32ms

Так как комп у меня относительно дрянь, поддерживает только усложнения до 200. Если абс будет больше, то застрянет. Приведенные выше данные являются средними данными, полученными после многократного использования ab-компрессии.

    ab -n 5000 -c 200 http://localhost:3000/

С точки зрения совместимости синтаксиса, ориентированной на будущее, Koa ничем не отличается от других фреймворков благодаря развитию Nodejs.

Раньше мы выбирали Koa в погоне за этой небольшой экстремальной производительностью, особенно при высокой степени параллелизма.Если это параллельная мощность 1000 Вт, запрос выполняется всего за десять миллисекунд, поэтому он может сэкономить десятки тысяч секунд общего времени обработки и его можно обработать еще несколько раз, однако сто тысяч запросов теперь не нужны.

Новые возможности языка JS?

В прошлом мы могли бросить вызов Koa, чтобы испытать обновленный синтаксис JS, и бросить вызов Koa, чтобы решить ад обратных вызовов, Мы были отточены экосистемой промежуточного программного обеспечения, в которой у Koa не было официальной поддержки. Также добавлено много веселья для всех. Больно и радостно. Но теперь сам Nodejs уже поддерживает более 99% нового синтаксиса.

Это ложное утверждение. Когда я работал в IBM, я работал с членом основной группы Nodejs (TSC) и имел честь обсудить с ним koa и выражение. Он спросил меня: «Вам нужен маршрутизатор для записи веб-сервисы в Nodejs?Не понадобится BodyParse?Понадобится ли разбор куки?Нет,нет.Тогда вы используете минималистский фреймворк,а потом вам нужно установить их обратно,чтобы было как экспресс.Так какую проблему он решает с минимализмом?», а приложения корпоративного уровня вообще не заботятся о производительности этих десяти миллисекунд.

после

Коа все еще наш первый выбор? Он никогда не был лучшим выбором для меня. На самом деле я являюсь лояльным пользователем Express, в основном из-за того, что я начал связываться с Express в первые годы из его команды обслуживания. И большинство моих бизнес-сценариев в основном представляют собой приложения корпоративного уровня, и стабильность и зрелость являются первыми элементами.

Но Коа приносит мне столько счастья, что выразить не в силах. Новые горизонты и развлечения. Поскольку в Koa отсутствует поддержка многих промежуточных программ, большую часть промежуточных программ приходится писать самостоятельно. За это время личность сильно выросла. Но не все команды могут его удержать. Я видел, как некоторые команды замедлялись из-за Коа и даже переворачивались в конце. В этом отношении Egg действительно решил многие серьезные проблемы технических команд с относительно слабыми техническими возможностями, которые хотят попробовать технологический стек Nodejs.