Автор оригинала: Artem Golovin.
Около шести месяцев назад я искал альтернативу для Sailsjs – MVC Framework для узла. К сожалению, паруса в некоторых вещах довольно много сосали – это было медленно на почтовых запросах, он не поддерживал много функций Postgres, таких как транзакции, и ему не хватало нескольких других функций (например, описано здесь ). Но худшее из этого в том, что он не получил ни одного основного обновления за последние три года.
Поэтому мы начали искать что-то, чтобы переместить наши проекты Nodejs. Мы пробовали Koa.js (но ему не хватало слишком много вещей), Meteor.js (Нам не нужно все в одном решении, только API), Окрупщик (Слишком много магии) и еще несколько.
Пока я не наткнулся на Adonisjs Отказ Если честно, хотя структура имеет 2,5 тыс. Начинает на Github, было нелегко найти. Но я сразу почувствовал влюблен в это. Я постараюсь объяснить, почему.
Плюс
Глядя на структуру папки и логику позади, она практически идентична супер популярной PHP-каркаре – Laravel Отказ И имеет хорошую продуманную структуру, которая позволяет удерживать вещи ясными. Так что, если вы когда-нибудь с этим работали, вы будете учить Adonis Real быстро.
Его ORM выполнена с учетом SQL-баз данных – например Postgres или MySQL. Это создает эффективные SQL-запросы и основаны на Активная запись идея. Его Запрос строитель Легко учиться и позволяет нам быстро строить простые запросы. Например:
const bicycles = yield Bicycle.query().whereIn('locationId', locationIds).with('locks').orderBy('label', 'asc').fetch()
Но даже когда нам нужно более сложные вещи, такие как миграции, транзакции, присоединения, патроны или полностью «родные языки SQL» – это все там и легко в использовании. Что касается любителей Mongodb – Adonis Поддерживает Это тоже.
- У него удобная проверка Расширение Отказ Легко писать правила, например:
const rules = { username: 'required|unique:users', email: 'required|email|unique:users', password: 'required|confirmed', group: 'existsIn:Group' } const validation = yield Validator.validate(userData, User.rules) if (validation.fails()) throw new Errors.Validation(validation)
Эти проверки могут быть как синхронными или асинхронными, могут получить доступ к базе данных или что-то, что нужно. И его можно продлить очень легко, например, мы написали проверку, чтобы доказать, существует ли запись в нашей базе данных.
- Просто бонус! Лично я люблю, как Adonis использует и использует Генератор Функции. Например:
// Classical aka spaghetti way Users.all((err, users) => { users.bicycles().fetch((err, bicycles) => { res.send({ users, bicycles }) }) }) // Promise way let users = null Users.all() .then(fetchedUsers => { users = fetchedUsers return users.bicycles().fetch() }) .then(bicycles => { res.send({ users, bicycles }) }) // Generator way (aka AdonisJS way) // Yielding pauses code execution until async function is finished const users = yield Users.all() const bicycles = yield users.bicycles().fetch() res.send({ users, bicycles })
Это делает код намного более понятнее! Нет более закрытых функций или обещаний, только простой код без таблицы.
Господин
- Там нет настройки теста по умолчанию. Запись кода без тестов – очень наивный способ развития Поэтому нам пришлось вложить время в реализацию нашей собственной тестовой установки вокруг Адониса. UPD: Официальная настройка и учебник по тестированию будут введены в следующие Adonis 4.0
- Поскольку есть не так много участников и пользователей, иногда вы все равно можете поймать ошибку в основных библиотеках. Некоторые из них довольно очевидно
- Хотя …| Документы Хорошо, сообщество все еще мало. Там не так много ответов на Stackoverflow и не так много учебных пособий (кроме Официальный One)
Вместо заключения
Мы используем Adonisjs в производстве за последние шесть месяцев. Это стабильно и быстро. Мы это любим!
Если вы ищете современную структуру Node.js с поддержкой ES6, Postgres и хорошей структурой – проверьте Adonis.js.
P. S. И если вам нужна помощь или есть проблемы с рамками, не стесняйтесь дать мне сообщение на Кодаментар Отказ Я также делаю учебные заседания, где я могу показать вам основы и несколько прохладных хаков – всего 120 долларов за первые 3 часа Adonis!