Как начать работу с Fastify

1656653767 kak nachat rabotu s fastify

Быстрая веб-платформа с низкими затратами для Node.js

Версия 1 Fastify была выпущена 7 марта. Эта публикация покажет вам, как настроить его, и мы обсудим некоторые невероятные функции, которые предлагает Fastify. Конфигурация не нужна – кодовая база Fastify будет работать на Node версий 6.x, 8.x и 9.x.

Готовы?

Начинать с npm i fastify и затем:

const fastify = require('fastify')()
fastify.get('/', (request, reply) => {  reply.send({ hello: 'world' })})
fastify.listen(3000, err => {  if (err) {    fastify.log.error(err)    process.exit(1)  }  fastify.log.info(    `server listening on ${fastify.server.address().port}`  )})

Теперь запустите свой сервер с помощью: node server

? Это! Вы запустили свой первый сервер Fastify.

Что здесь происходит?

const fastify = require('fastify')()

Строка 1 импортирует фреймворк Fastify в проект JavaScript и создает его экземпляр. Ваш экземпляр сервера теперь хранится в fastify переменная. Вы можете передать дополнительные параметры в эту строку так:

const fastifyWithOptions = require('fastify')({  logger: {    prettyPrint: true   }})

Эта опция, работающая на Pino logger, делает вывод консоли легким для чтения и красочным. Ознакомьтесь с документацией Pino, чтобы получить дополнительные параметры регистратора, и документацией Fastify, чтобы получить дополнительные параметры экземпляра Fastify.

Далее: маршрутизация

fastify.get('/', (request, reply) => {  reply.send({ hello: 'world' })})

Строки с 3 по 5 определяют очень простой маршрут. Маршруты представляют собой ядро ​​любого внутреннего сервера Node.js. Fastify поддерживает два метода определения маршрутов: использованный выше сокращенный метод или общий .route способ, как показано ниже.

fastify.route({  method: 'GET',  url: '/',  handler: function (request, reply) {    reply.send({ hello: 'world' })  }})

Обе эти реализации выполняют абсолютно одинаковые действия и имеют одинаковую производительность, поэтому просто используйте то, что для вас наиболее целесообразно.

Объявление маршрута имеет множество других доступных опций, которые здесь не показаны.

  • Предоставьте схему JSON для запросов и ответов, что может увеличить пропускную способность на 10–20%.
  • Определите a beforeHandler метод, который вызывается непосредственно перед handler функция. Это отлично подходит для аутентификации, и я продемонстрирую, как использовать его в своем плагине JWT Auth (больше о плагинах Fastify позже).

Запустите свои двигатели! 3…2…1…ГО!

fastify.listen(3000, err => {  if (err) {    fastify.log.error(err)    process.exit(1)  }  fastify.log.info(    `server listening on ${fastify.server.address().port}`  )})

Наконец запустите экземпляр Fastify на локальном порту 3000. Это последний шаг, необходимый для создания собственного экземпляра Fastify. Внутренне этот метод будет ждать .ready() (который вызывается после загрузки плагинов). После вызова нельзя определить новые маршруты .listen() метод.

Что дальше? Плагины!

Одной из лучших особенностей Fastify является то, как легко писать и включать плагины в экземпляр сервера. Для начала определите функцию:

function superPlugin (fastify, opts, next) {  fastify.decorate('superMethod', () => {    console.log(`Secret code: ${opts.secretCode}`)  })  next()}

Теперь с помощью fastify-plugin модуль, экспортируйте свой новый плагин.

const fp = require('fastify-plugin')
module.exports = fp(superPlugin, {  fastify: '>=1.0.0',  name: 'super-plugin'})

Наконец-то зарегистрируйте свой плагин в своем экземпляре Fastify:

/* Inside the main server.js file */const superPlugin = require('super-plugin')
fastify.register(superPlugin, {  secretCode: 'JavaScript is awesome!'})

Теперь вы можете позвонить superMethod везде, где у вас есть доступ к своему экземпляру Fastify.

/* server.js */
fastify.listen(3000, err => {  fastify.superMethod()})

Обратите внимание: вы можете зарегистрировать плагины в других плагинах, которые блокируют область видимости дочернего плагина только для родительского плагина. Эта тема слишком сложна для этой статьи, поэтому я не освещаю ее подробнее. Вы можете прочитать больше о плагинах Fastify здесь. Ознакомьтесь с полными примерами файлов в Github gist здесь.

Иди вперед и побеждай

Fastify – это быстро. Действительно очень быстро?

7kA4wH6-mzlDXSub9GMnjkXyhrhPwml4x64i
Fastify Benchmarks v1.1.x

После этого короткого введения я рекомендую вам ознакомиться со всеми возможностями Fastify. Если вам нравится программирование с открытым исходным кодом, Fastify также является отличным проектом, в который следует внести свой вклад. Существует также отличная экосистема плагинов, которые следует проверить и внести свой вклад!

Продолжайте так продолжать ~ Итан Арровуд

Итан Арровуд??? (@ArrowoodTech) | Twitter
The последние твиты от Итана Арровуда??? (@ArrowoodTech). всегда слушаю музыку. вероятно, вносит свой вклад в открытие… twitter.com Итон-Арровуд (Ethan Arrowood)
Ethan-Arrowood имеет 80 доступных хранилищ. Следите за их кодом на GitHub.github.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *