AdonisJS - 2017 yilning eng yaxshi NodeJS doirasi

Taxminan olti oy oldin men SailsJS uchun alternativani qidirdim - tugun uchun MVC Framework. Afsuski, yelkanlar ba'zi narsalarda juda ko'p narsalarni yutishdi - bu POST so'rovlarida sust, postgres kabi ko'plab funktsiyalarni qo'llab-quvvatlamadi va boshqa funktsiyalarga ega emas (masalan, bu erda tasvirlangan). Ammo eng yomoni, so'nggi uch yil ichida biron bir muhim yangilanish olmaganligi.

Shunday qilib, biz nodeJS loyihalarimizni boshqa joyga ko'chirish uchun nimadir qidirishni boshladik. Biz Koa.js-ni (lekin bunga ko'p narsa etishmayapti), Meteor.js-ni sinab ko'rdik (biz birma-bir echimga muhtoj emasmiz, faqat API), Loopback (juda ko'p sehr) va yana bir qancha.

AdonisJSga qoqilgunimcha. Rostini aytganda, ramka gitubadan 2,5k boshlangan bo'lsa ham, uni topish oson bo'lmadi. Lekin men darhol uni sevib qoldim. Buning sababini tushuntirishga harakat qilaman.

Taroziga soling

1. Papka tuzilishi va orqasidagi mantiqqa nazar tashlaydigan bo'lsak, u juda mashhur PHP-ramka - Laravel bilan deyarli bir xil. Va Laravel yaxshi o'ylangan tuzilishga ega, bu sizga narsalarni aniq saqlashga imkon beradi. Shunday qilib, agar siz u bilan ishlagan bo'lsangiz, Adonisni tezda bilib olasiz.

2. Uning ORM-si Postgres yoki MySQL kabi SQL-ma'lumotlar bazasi asosida tuzilgan. U samarali SQL-so'rovlarni yaratadi va faol yozuvlar g'oyasiga asoslanadi. Uning so'rovlar tuzuvchisini o'rganish oson va oddiy so'rovlarni tezda tuzishga imkon beradi. Masalan:

const velosipedlari = Bicycle.query (). hosil bo'lgan joyda ('locationId', locationIds) .bilan ('locks'). orderBy ('label', 'asc').

Ammo bizda migratsiya, tranzaktsiyalar, qo'shilishlar, ulanishlar yoki "ona tilidagi SQL tili" kabi so'rovlar kabi murakkab narsalar kerak bo'lganda - barchasi mavjud va ulardan foydalanish oson. MongoDB ixlosmandlariga kelsak - adonis ham uni qo'llab-quvvatlaydi.

3. Bu qulay tekshirish kengaytmasiga ega. Qoidalarni yozishni osonlashtiradi, masalan:

const qoidalari = {
  foydalanuvchi nomi: 'zarur | noyob: foydalanuvchilar',
  elektron pochta: 'kerakli | elektron pochta | noyob: foydalanuvchilar',
  parol: 'zarur | tasdiqlandi',
  guruh: 'mavjudIn: guruh'
}
const validation = rentabellik Validator.validate (userData, User.rules)
if (validation.fails ()) yangi xatolarni yuboradi.Validatsiya (tekshirish)

Ushbu tekshirishlar ham sinxron, ham asinxron bo'lishi mumkin, ma'lumotlar bazasiga kira oladi yoki kerak bo'lganda. Va uni juda oson uzaytirish mumkin, masalan, biz ma'lumotlar bazamizda yozuv mavjudligini tekshirish uchun chek yozdik.

4. Shunchaki bonus! Shaxsan men Adonisning generator funktsiyalaridan qanday foydalanishi va undan foydalanishini yaxshi ko'raman. Masalan:

// Klassik aka spagetti yo'li
Users.all ((err, foydalanuvchilar) => {
  users.botosikllar (). yuklash ((err, velosipedlar) => {
    res.send ({foydalanuvchilar, velosipedlar})
  })
})
// Va'da yo'li
foydalanuvchilarga ruxsat berish = null
Users.all ()
.then (fetchedUsers => {
  foydalanuvchilar = fetchedUsers
  qaytish foydalanuvchilar. velosipedlar (). olib kelish ()
})
.then (velosipedlar => {
  res.send ({foydalanuvchilar, velosipedlar})
})
// Generator usuli (AdonisJS aka yo'li)
// Yutish async funktsiyasi tugamaguncha kod ishlashini to'xtatib turadi
const users = users.all () samaradorlik
const velosipedlar = foydalilar. velosipedlar (). olib kelish ()
res.send ({foydalanuvchilar, velosipedlar})

Kodni yanada aniqroq qiladi! Hech qanday yopiq funktsiyalar yoki va'dalar yo'q, faqat jadvalsiz sodda kod.

Kamchiliklari

  1. Standart sinov sozlamalari mavjud emas. Sinovlarsiz kod yozish - bu rivojlanishning juda sodda usuli :-) Shunday qilib, Adonis atrofida o'z sinov dasturimizni amalga oshirishga vaqt sarflashimiz kerak edi. Yangilanish: rasmiy sinovlarni sozlash va darslik quyidagi Adonis 4.0 da joriy etiladi
  2. Ishtirokchilar va foydalanuvchilar ko'p emasligi sababli, ba'zida siz yadro kutubxonalarida xatolikka duch kelishingiz mumkin. Ulardan ba'zilari aniq :-)
  3. Hujjatlar yaxshi bo'lsa ham, jamiyat hali ham kichik. StackOverflow-da javoblar ko'p emas va ko'pgina qo'llanmalar mavjud emas (rasmiylardan tashqari).

Xulosa o‘rniga

Biz so'nggi olti oy davomida AdonisJS-ni ishlab chiqarishda ishlatmoqdamiz. Bu barqaror va tez. Biz buni yaxshi ko'ramiz!

Agar siz ES6, Postgres qo'llab-quvvatlashi va yaxshi tuzilishga ega zamonaviy Node.js tizimini qidirsangiz - Adonis.js-ni tekshiring

P. S. Mening so'nggi loyiham - https://pingdisco.com 100% adonisjs bo'lib, u bepul ish vaqtini nazorat qilish vositasi. U erda qayd yozuvini yaratishga harakat qiling (to'ldirish uchun bitta maydonni oladi) va o'zingizni qanchalik tez va silliq ekanligini ko'ring.

P. P. S. Agar sizga yordam kerak bo'lsa yoki doiradagi muammolar bo'lsa, menga Codementor haqida xabar berishdan tortinmang. Men shuningdek, dars mashg'ulotlarini qilaman, bu erda sizga Adonisning asoslarini va bir nechta ajoyib qopqoqlarini ko'rsataman.