AdonisJS - أفضل إطار NodeJS لعام 2017

منذ حوالي ستة أشهر كنت أبحث عن بديل لـ SailsJS - إطار عمل MVC للعقدة. لسوء الحظ ، امتص Sails الكثير في بعض الأشياء - كان بطيئًا في طلبات POST ، ولم يدعم العديد من وظائف Postgres مثل المعاملات وكان يفتقر إلى بعض الميزات الأخرى (على سبيل المثال ، الموصوفة هنا). لكن الأسوأ من ذلك أنه لم يحصل على تحديث رئيسي واحد في السنوات الثلاث الماضية.

لذلك بدأنا في البحث عن شيء لنقل مشاريع nodeJS الخاصة بنا إلى. لقد جربنا Koa.js (لكنها كانت تفتقر إلى الكثير من الأشياء) ، Meteor.js (لا نحتاج حقًا إلى حل الكل في واحد ، API فقط) ، Loopback (الكثير من السحر) وغير ذلك الكثير.

حتى تعثرت في AdonisJS. أن نكون صادقين ، على الرغم من أن الإطار يحتوي على 2.5k يبدأ على github ، لم يكن من السهل العثور عليه. لكنني شعرت على الفور في الحب معها. سأحاول شرح السبب.

الايجابيات

1. بالنظر إلى بنية المجلد والمنطق وراءه ، فإنه يكاد يكون متطابقًا مع إطار PHP ذو الشعبية الكبيرة - Laravel. ولارافيل لديها بنية جيدة مدروسة ، والتي تتيح لك الحفاظ على الأمور واضحة. لذلك إذا كنت قد عملت معها من قبل ، فسوف تتعلم أدونيس بسرعة حقيقية.

2. يرصد ORM مع قواعد بيانات SQL في الاعتبار - مثل Postgres أو MySQL. يقوم بإنشاء استعلامات SQL فعالة ويقوم على فكرة السجل النشط. منشئ الاستعلامات سهل التعلم ويسمح لنا بإنشاء استعلامات بسيطة بسرعة. فمثلا:

دراجات const = yield Bicycle.query (). whereIn ('locationId'، locationIds). with ('locks'). orderBy ('label'، 'asc'). fetch ()

ولكن حتى عندما نحتاج إلى أشياء أكثر تعقيدًا مثل عمليات الترحيل أو المعاملات أو عمليات الربط أو الاستعلامات أو استعلامات "لغة SQL الأصلية" تمامًا - كل ذلك موجود وسهل الاستخدام. بالنسبة لمحبي MongoDB - أدونيس يدعمها أيضًا.

3. لديها تمديد التحقق من صحة مفيد. يجعل من السهل كتابة القواعد ، على سبيل المثال:

قواعد const = {
  اسم المستخدم: "مطلوب | فريد: مستخدمون" ،
  البريد الإلكتروني: "مطلوب | بريد إلكتروني | فريد: مستخدمون" ،
  كلمة المرور: "مطلوب | أكد" ،
  المجموعة: 'موجود في: المجموعة'
}
التحقق من صحة const = العائد Validator.validate (userData ، User.rules)
إذا قام (validation.fails ()) برمي أخطاء جديدة. التحقق من الصحة (التحقق من الصحة)

يمكن أن تكون هذه الشيكات متزامنة أو غير متزامنة ، ويمكن الوصول إلى قاعدة البيانات أو أي شيء مطلوب. ويمكن تمديده بسهولة شديدة ، على سبيل المثال ، لقد كتبنا شيكًا لإثبات ما إذا كان السجل موجودًا في قاعدة البيانات الخاصة بنا.

4. مجرد مكافأة! أنا شخصياً أحب طريقة استخدام أدونيس واستخدام وظائف المولد. فمثلا:

// الكلاسيكية ويعرف أيضا باسم السباغيتي
Users.all ((err، users) => {
  users.bicycles (). fetch ((err، bicycles) => {
    res.send ({المستخدمين ، الدراجات})
  })
})
// وعد الطريق
السماح للمستخدمين = فارغة
Users.all ()
. ثم (fetchedUsers => {
  المستخدمين = fetchedUsers
  إرجاع المستخدمين. الدراجات (). إحضار ()
})
.ثم (دراجات => {
  res.send ({المستخدمين ، الدراجات})
})
// مولد الطريق (ويعرف أيضا باسم AdonisJS الطريقة)
// العائد يوقف تنفيذ التعليمات البرمجية مؤقتًا حتى يتم الانتهاء من وظيفة المزامنة
المستخدمين const = العائد Users.all ()
دراجات كونت = تسفر عن المستخدمين. دراجات ()
res.send ({المستخدمين ، الدراجات})

يجعل الرمز أكثر وضوحًا! لا مزيد من الوظائف المغلقة أو الوعود ، فقط رمز بسيط دون جدولة.

سلبيات

  1. لا يوجد إعداد اختبار افتراضي. كتابة التعليمات البرمجية دون اختبارات - هي طريقة ساذجة للغاية لتطوير :-) لذلك كان علينا أن نستثمر الوقت في تنفيذ إعداد الاختبار الخاص بنا حول Adonis. التحديث: سيتم تقديم إعداد الاختبار الرسمي والبرنامج التعليمي في برنامج Adonis 4.0 التالي
  2. نظرًا لعدم وجود العديد من المساهمين والمستخدمين ، فلا يزال بإمكانك في بعض الأحيان اكتشاف خطأ في المكتبات الأساسية. بعضها واضح تماما :-)
  3. على الرغم من أن المستندات جيدة ، لا يزال المجتمع صغيرًا. لا توجد إجابات كثيرة على StackOverflow ولا توجد العديد من البرامج التعليمية (باستثناء الرسمية)

بدلا من الخاتمة

نحن نستخدم AdonisJS في الإنتاج خلال الأشهر الستة الماضية. انها مستقرة وسريعة. نحن نحبها!

إذا كنت تبحث عن إطار عمل Node.js حديث مع ES6 ، دعم Postgres وهيكل جيد - تحقق من Adonis.js

P. S. مشروعي الأخير - https://pingdisco.com هو 100٪ adonisjs ، وهو أداة مجانية لمراقبة الجهوزية. جرّب إنشاء حساب هناك (لا يتطلب الأمر سوى حقل واحد لملء البيانات) وشاهد بنفسك مدى السرعة والسلاسة.

P. P. S. وإذا كنت بحاجة إلى مساعدة أو لديك مشاكل في الإطار ، فلا تتردد في إرسال رسالة إلى Codementor. أقوم أيضًا بدورات تعليمية حيث يمكنني أن أريكم الأساسيات وعدد قليل من الاختراقات الرائعة لـ Adonis.