Özgür Adem Işıklı Özgür Adem Işıklı Software Developer Resume Contact

Software Developer

Adonis Web Framework İncelemesi

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.

Laravel Benzerliği

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.

Routing


Route::get('user/{id}', 'UserController@showProfile');  // Laravel

Route.get('user/{id}', 'UserController.showProfile')  // Adonis

Controllers


// 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


$request->input('email');   // Laravel

request.input('email')  // Adonis

Response


response()->json(['name' => 'foo']);   // Laravel

response.json({ name: "foo" })  // Adonis

ORM

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

Konsol Komutları

Adonis tıpkı Laravel gibi bazı görevleri gerçekleştirmek için bir komut satırı desteğiyle birlikte gelmektedir.


$ ./ace make:controller Home
$ ./ace make:model User

Avantajlar

  • 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.)

Dezavantajlar

  • 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.

Sonuç

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.

Kaynaklar

What About Comments?

I do not use any comment system such as Disqus because of user's privacy. If you want to discuss something about this post, you may open an issue on the repo.

You may check what is the problem with Disqus;