Рубрики
Без рубрики

Adonisjs – лучшие нодеевые рамки 2017 года

Рамки стиля Larave для Node.js

Автор оригинала: Artem Golovin.

Около шести месяцев назад я искал альтернативу для Sailsjs – MVC Framework для узла. К сожалению, паруса в некоторых вещах довольно много сосали – это было медленно на почтовых запросах, он не поддерживал много функций Postgres, таких как транзакции, и ему не хватало нескольких других функций (например, описано здесь ). Но худшее из этого в том, что он не получил ни одного основного обновления за последние три года.

Поэтому мы начали искать что-то, чтобы переместить наши проекты Nodejs. Мы пробовали Koa.js (но ему не хватало слишком много вещей), Meteor.js (Нам не нужно все в одном решении, только API), Окрупщик (Слишком много магии) и еще несколько.

Пока я не наткнулся на Adonisjs Отказ Если честно, хотя структура имеет 2,5 тыс. Начинает на Github, было нелегко найти. Но я сразу почувствовал влюблен в это. Я постараюсь объяснить, почему.

Плюс

  1. Глядя на структуру папки и логику позади, она практически идентична супер популярной PHP-каркаре – Laravel Отказ И имеет хорошую продуманную структуру, которая позволяет удерживать вещи ясными. Так что, если вы когда-нибудь с этим работали, вы будете учить Adonis Real быстро.

  2. Его ORM выполнена с учетом SQL-баз данных – например Postgres или MySQL. Это создает эффективные SQL-запросы и основаны на Активная запись идея. Его Запрос строитель Легко учиться и позволяет нам быстро строить простые запросы. Например:

const bicycles = yield Bicycle.query().whereIn('locationId', locationIds).with('locks').orderBy('label', 'asc').fetch()

Но даже когда нам нужно более сложные вещи, такие как миграции, транзакции, присоединения, патроны или полностью «родные языки SQL» – это все там и легко в использовании. Что касается любителей Mongodb – Adonis Поддерживает Это тоже.

  1. У него удобная проверка Расширение Отказ Легко писать правила, например:
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)

Эти проверки могут быть как синхронными или асинхронными, могут получить доступ к базе данных или что-то, что нужно. И его можно продлить очень легко, например, мы написали проверку, чтобы доказать, существует ли запись в нашей базе данных.

  1. Просто бонус! Лично я люблю, как 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 })

Это делает код намного более понятнее! Нет более закрытых функций или обещаний, только простой код без таблицы.

Господин

  1. Там нет настройки теста по умолчанию. Запись кода без тестов – очень наивный способ развития Поэтому нам пришлось вложить время в реализацию нашей собственной тестовой установки вокруг Адониса. UPD: Официальная настройка и учебник по тестированию будут введены в следующие Adonis 4.0
  2. Поскольку есть не так много участников и пользователей, иногда вы все равно можете поймать ошибку в основных библиотеках. Некоторые из них довольно очевидно
  3. Хотя …| Документы Хорошо, сообщество все еще мало. Там не так много ответов на Stackoverflow и не так много учебных пособий (кроме Официальный One)

Вместо заключения

Мы используем Adonisjs в производстве за последние шесть месяцев. Это стабильно и быстро. Мы это любим!

Если вы ищете современную структуру Node.js с поддержкой ES6, Postgres и хорошей структурой – проверьте Adonis.js.

P. S. И если вам нужна помощь или есть проблемы с рамками, не стесняйтесь дать мне сообщение на Кодаментар Отказ Я также делаю учебные заседания, где я могу показать вам основы и несколько прохладных хаков – всего 120 долларов за первые 3 часа Adonis!