Adonis, NodeJS ile daha az kod yazarak uygulama geliştirmeyi amaçlayan ve MVC mimarisine göre oluşturulmuş bir framework'dür. Diğer NodeJS web frameworklerine göre öne çıkan başlıca özellikleri ES6 ile geliştirme yapmayı amaçlaması ve PHP dili için geliştirimiş Laravel'in mimarisine benzer olmasıdır.
Adonis dokümanlarında da yer aldığı gibi; Laravel'in özellikleri kasıtlı olarak framework bünyesinde uygulanmaya çalışılmaktadır. Benzerlikleri anlamak için temel bazı tanımlamaları hem Laravel'de hem de Adonis bünyesinde incelememiz yeterli olacaktır.
Route::get('user/{id}', 'UserController@showProfile'); // Laravel
Route.get('user/{id}', 'UserController.showProfile') // Adonis
// Laravel
namespace App\Http\Controllers;
class UserController extends \App\Http\Controllers\Controller {
public function showProfile($id)
{
return 'showProfile';
}
}
// Adonis
class UserController {
*showProfile (request, response) {
response.send('showProfile')
}
}
module.exports = HomeController
$request->input('email'); // Laravel
request.input('email') // Adonis
response()->json(['name' => 'foo']); // Laravel
response.json({ name: "foo" }) // Adonis
Adonis'de de tıplı Laravel'in Eloquent ORM'si gibi bir Lucid adında bir ORM kütüphanesi bulunur.
// Laravel
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
}
// Adonis
const Lucid = use('Lucid')
class User extends Lucid {
}
Adonis'de de tıplı Eloquent ORM'de yaptığınız gibi ilişkiler tanımlayabilir ya da şartlara bağlı sorgulamalar yapabilirsiniz. Ancak yazının çok uzamaması için, ilgili bölümleri dahil etmiyorum. Link aracılığı ile daha detaylı bilgi alabilirsiniz: İlişkiler, Sorgular
Adonis tıpkı Laravel gibi bazı görevleri gerçekleştirmek için bir komut satırı desteğiyle birlikte gelmektedir.
{BODY}amp;nbsp;./ace make:controller Home
$ ./ace make:model User
NodeJS tabanlı olması nedeniyle, NodeJS'in PHP'ye göre olan avantajlarının hepsinden yararlanabilirsiniz. (Hızlı, daha hızlı büyüyen üçüncü parti kütüphane havuzu vb.)
Laravel'e benzedeği için daha önce Laravel kullanan geliştiriciler oldukça hızlı adapte olabilirler.
ES6 destekli olduğu için, yazdığınız kodların ExpressJS ya da diğer NodeJS frameworklerine göre göreceli olarak daha düzgün olması muhtemeldir. (Ancak sonuçta bir insan geliştirme yapacak, mükemmellik garantisi söz konusu olamaz.)
Geliştirdiğiniz uygulamanın test edilmesi için kullanılabilecek yardımcı araçlar Laravel'de olduğu gibi yoktur.
Henüz belirli bir community oluşmamıştır. Resmi dokümantasyonun yanında ek kaynaklar sınırlıdır.
Aktif olarak geliştirme yapan developer sayısı oldukça azdır. GitHub'da bulunan çekirdek repoda sadece 20 adet fork alınmıştır. Görebildiğim kadarıyla sadece Harminder Virk tarafından geliştirilmektedir.
Benim görüşlerime göre gelecek vaadeden, ancak zamana ve desteğe ihtiyacı olan bir framework denemesidir. Eğer zaman içerisinde ihtiyacı olan desteği diğer developerlardan bulabilir ve geliştirmeler ivme kazanırsa, NodeJS topluluğu tarafından sahiplenilecektir.