AdonisJS - rangka kerja NodeJS terbaik 2017

Sekitar enam bulan yang lalu saya mencari alternatif untuk SailsJS - Rangka Kerja MVC untuk nod. Sayangnya, Sails mengisap banyak perkara - lambat pada permintaan POST, ia tidak menyokong banyak fungsi Postgres seperti urus niaga dan kekurangan beberapa ciri lain (sebagai contoh, diterangkan di sini). Tetapi yang paling teruk adalah bahawa ia tidak mendapat satu kemasukan utama dalam tiga tahun yang lalu.

Jadi kami mula mencari sesuatu untuk menggerakkan projek nodeJS kami. Kami telah mencuba Koa.js (tetapi ia kurang banyak perkara), Meteor.js (kita tidak semestinya memerlukan penyelesaian semua-dalam-satu, hanya API), Loopback (sihir terlalu banyak) dan beberapa lagi.

Sehingga saya terjumpa AdonisJS. Sejujurnya, walaupun kerangka itu telah 2.5k bermula di github, itu tidak mudah dicari. Tetapi saya segera merasakan cinta dengannya. Saya akan cuba menjelaskan sebabnya.

Kebaikan

1. Melihat struktur folder dan logik di belakang, ia hampir sama dengan kerangka PHP yang sangat popular - Laravel. Dan Laravel mempunyai struktur pemikiran yang baik, yang membolehkan anda menyimpan perkara-perkara yang jelas. Jadi jika anda pernah bekerja dengannya, anda akan belajar Adonis dengan cepat.

2. ORMnya dibuat dengan pangkalan data SQL - seperti Postgres atau MySQL. Ia mencipta pertanyaan SQL yang cekap dan berdasarkan idea rekod aktif. Pembina pertanyaannya mudah dipelajari dan membolehkan kami membina pertanyaan mudah dengan cepat. Sebagai contoh:

'bas', 'asc'). () '' '' '' '' '' '' ''

Tetapi walaupun kita memerlukan barangan yang lebih rumit seperti migrasi, urus niaga, menyertai, chak atau sepenuhnya "bahasa asli bahasa" pertanyaan - semuanya ada dan mudah digunakan. Bagi pencinta MongoDB - adonis menyokongnya juga.

3. Ia mempunyai sambungan pengesahan yang berguna. Menjadikan mudah untuk menulis peraturan, contohnya:

peraturan const = {
  nama pengguna: 'diperlukan | unik: pengguna',
  e-mel: 'diperlukan | e-mel: unik: pengguna',
  kata laluan: 'diperlukan | disahkan',
  kumpulan: 'existsIn: Group'
}
const validation = hasil Validator.validate (userData, User.rules)
jika (validation.fails ()) membuang Kesilapan baru.Validasi (pengesahan)

Pemeriksaan ini boleh bersifat segerak atau tidak segerak, boleh mengakses pangkalan data atau apa yang diperlukan. Dan ia boleh dilanjutkan dengan mudah, sebagai contoh, kami telah menulis cek untuk membuktikan sama ada rekod wujud dalam pangkalan data kami.

4. Hanya bonus! Secara peribadi, saya suka bagaimana Adonis menggunakan dan menggunakan fungsi penjana. Sebagai contoh:

/ // Klasik aka spaghetti cara
Users.all ((err, users) => {
  pengguna.bicycles (). ambil ((err, basikal) => {
    res.send ({pengguna, basikal})
  })
})
/ / Janji cara
biarkan pengguna = null
Users.all ()
.then (fetchedUsers => {
  users = fetchedUsers
  kembali users.bicycles (). fetch ()
})
.then (basikal => {
  res.send ({pengguna, basikal})
})
// Cara penjanaan (aka AdonisJS cara)
// Menuntaskan menjeda pelaksanaan kode hingga fungsi async selesai
const users = yield Users.all ()
bas bas = hasil pengguna.bicycles (). ambil ()
res.send ({pengguna, basikal})

Ia menjadikan kod itu lebih jelas! Tidak ada fungsi atau janji yang tertutup, hanya kod ringkas tanpa tabulasi.

Keburukan

  1. Tiada persediaan ujian lalai. Kod penulisan tanpa ujian - adalah cara yang sangat naif untuk membangunkan :-) Oleh itu, kita perlu melabur masa untuk melaksanakan persediaan ujian sendiri sekitar Adonis. Kemas kini: persediaan ujian dan tutorial ujian rasmi akan diperkenalkan di Adonis 4.0 berikut
  2. Kerana tidak banyak penyumbang dan pengguna, kadang-kadang anda masih boleh menangkap pepijat di perpustakaan teras. Sebahagian daripada mereka agak jelas :-)
  3. Walaupun dokumen itu bagus, masyarakat masih kecil. Tidak banyak jawapan pada StackOverflow dan tidak banyak tutorial (kecuali yang rasmi)

Daripada kesimpulan

Kami menggunakan AdonisJS dalam pengeluaran selama enam bulan yang lalu. Ia stabil dan cepat. Kami menyukainya!

Jika anda sedang mencari rangka kerja Node.js moden dengan ES6, sokongan Postgres dan struktur yang baik - semak Adonis.js

P. S. Projek terkini saya - https://pingdisco.com adalah 100% adonisj, ia adalah alat pengawasan uptime percuma. Cuba buat akaun di sana (hanya mengambil satu bidang untuk diisi) dan lihat diri anda berapa cepat dan lancar.

P. P. S. Dan jika anda memerlukan bantuan atau mempunyai masalah dengan rangka kerja, jangan teragak-agak untuk memberi saya mesej pada Codementor. Saya juga melakukan sesi tutorial di mana saya boleh menunjukkan kepada anda asas-asas dan beberapa keren Adonis sejuk.