Если вы знакомы с созданием веб-приложений с использованием Next.js, возможно, вы столкнулись с очень распространенной проблемой: сложно реализовать глобальное и настраиваемое промежуточное программное обеспечение для ваших маршрутов API. В то время как Next.js предлагает простое создание маршрутов страниц, отсутствует поддержка легко написанного промежуточного программного обеспечения для конкретных маршрутов или глобального промежуточного программного обеспечения без добавления настраиваемого сервера.
Решение? Connext.js, облегченная npm-библиотека маршрутизации и промежуточного программного обеспечения для Next.js, работающая на Dirext.js. Как команда разработчиков с открытым исходным кодом мы стремились преодолеть разрыв между Next.js и Express, не добавляя ненужных объемов в веб-приложения.
При создании масштабируемого приложения Next.js существует множество аспектов разработки, которые могут стать утомительными и синтаксически сложными без возможности добавления глобального и настраиваемого промежуточного программного обеспечения к вашим маршрутам API. Например, для аутентификации пользователя в вашем приложении может потребоваться большой набор функций для проверки учетных данных для входа и последующей отправки соответствующего ответа. Без глобального и настраиваемого промежуточного программного обеспечения разработчик должен обрабатывать всю эту логику, вложенную в одну большую анонимную функцию экспорта по умолчанию, что, по крайней мере, окажет негативное влияние на читаемость и понятность их кода.
С Connext.js разработчики могут настраивать маршруты с синтаксисом, аналогичным Express.js, и с возможностью реализации глобального промежуточного программного обеспечения на всех маршрутах API. Connext.js также позволяет разработчикам использовать гибкость цепочки пользовательских функций промежуточного программного обеспечения для запросов, поступающих в их заранее определенные конечные точки, без необходимости добавления дополнительного сервера.
Что делает Express.js достойным тиражирования?
Express.js - это готовая среда Node.js, которая может помочь вам создавать серверные веб-приложения быстрее и эффективнее.
Express не только легко настраивается и настраивается, имея более 43 000 звезд на GitHub, Express - это самый популярный фреймворк для узлов. Это позволяет разработчику определять маршруты своего приложения на основе методов HTTP и URL-адресов. Express включает в себя различные модули промежуточного программного обеспечения, которые разработчик может использовать для выполнения дополнительных задач по запросу и ответу, а также позволяет им определять промежуточное программное обеспечение для обработки ошибок.
Connext.js стремится воспроизвести в Next.js такие характеристики Express.js, как простота, минимализм, гибкость, масштабируемость и производительность, которые унаследованы непосредственно от Node.js. С Connext.js вы можете определять маршруты в своем приложении на основе методов HTTP и URL-адресов, как и в Express. Connext.js также обладает гибкостью для добавления функций промежуточного программного обеспечения на этих маршрутах, при этом каждая функция имеет постоянный доступ к запросу и ответу, а также возможность перемещаться по цепочке промежуточного программного обеспечения с помощью встроенной функции next () функция.
Функция next () Express.js - теперь в Next.js!
Самая большая техническая проблема, с которой наша команда столкнулась при разработке Connext.js, заключалась в воспроизведении готовой функциональности функции next (). Next неявно передает объект запроса и ответа через каждую функцию в цепочке промежуточного программного обеспечения и действует как катализатор для вашего глобального обработчика ошибок.
Мы смогли использовать постоянные справочные данные с лексической областью видимости, найденные в закрытии Javascript, а также асинхронные обещания для отслеживания текущего местоположения в определяемой пользователем цепочке промежуточного программного обеспечения, а также для правильного перехода к правильной функции промежуточного программного обеспечения всякий раз, когда выполнялась следующая функция. вызван.
Чтобы определить маршрут с помощью Connext-js, добавьте файл JavaScript в необходимую
api
папку Next.js.
├── ...
├── controllers
│ ├── global.js # required for global middleware
│ └── middleware.js # suggested for modularization of middleware
├── pages # required folder for routes in Next.js
│ └── api # required folder for API routes in Next.js
| └── route.js # create example route inside of API folder
└── ...
Внутри файла маршрута
1. Требовать в Connext-js и любых файлах контроллера промежуточного ПО для конкретных маршрутов
2. Создайте новый экземпляр Connext-js.
3. Настройте маршруты, вызвав один из встроенных HTTP-методов Connext-js.
Передайте текущий маршрут в качестве первого аргумента
Сцепите любые желаемые функции промежуточного программного обеспечения в том порядке, в котором вы хотите, чтобы они вызывались.
Анонимная функция промежуточного программного обеспечения может быть определена в конце цепочки промежуточного программного обеспечения. Эта функция завершит цикл запроса.
4. В одном файле маршрута можно вызывать несколько методов HTTP.
5. Установите вызов Connext-js в качестве функции экспорта файлов маршрутов по умолчанию.
const Connext = require('Connext-js'); const middleware = require('../../controllers/middleware'); const app = Connext(); app.get('/api/exampleRoute', middleware.one, middleware.two, (req, res) => { res.status(200).json(res.example); }); app.post('/api/exampleRoute', middleware.three, (req, res) => { res.status(200).json(res.example); }); app.delete('/api/exampleRoute', middleware.four, (req, res) => { res.status(200).json(res.example); }); export default app;
Как видно из приведенного выше фрагмента кода примера, если вы знакомы с обработкой маршрутов в Express.js, кривая обучения для реализации Connext.js в вашем приложении Next.js будет минимальной. Connext.js предлагает бесшовную легкую интеграцию с маршрутами API Next.js и является разумным инструментом для любого разработчика, который хочет реализовать глобальное и специфичное для маршрутизации промежуточное ПО в своем приложении.
в соавторстве с Сара Пауэрс
Connext.js - проект с открытым исходным кодом на Github, созданный Geist Software S olutions. Библиотека доступна для скачивания на npm. Следите за прогрессом нашей команды в Twitter @GeistSoftware и не стесняйтесь обращаться к нам по любым вопросам или идеям на Github.