Photo by Kyle Johnson on Unsplash

Sails.js Framework Mirip Codeigniter?

Riris Bayu Asrori
4 min readJul 11, 2020

--

Disclaimer dulu sebelum cerita:
1. Baru pertamakali nyoba sails.js jadi mungkin ada banyak poin yang kelewat.
2. Terakhir pakai Codeigniter ketika versi 3 rilis, semenjak itu tidak berkecimpung di dunia CI lagi.

Intro

Intro ini cukup panjang, boleh di skip

Selama perjalanan saya sebagai programmer semenjak kuliah, ada dua tipe programmer lain yang saya temui: suka menggunakan framework, dan ada yang lebih memilih membangun sendiri dari awal (catatan: framework dan library itu berbeda). Alasannya bermacam-macam. Namun yang paling utama adalah “Design Pattern”. Yang suka framework, mereka ingin sebuah standar universal untuk projeknya dan bahkan anggota timnya. Mereka tidak perlu lagi repot-repot memperdebatkan mana “Design Pattern” terbaik untuk projek mereka. Di sisi lain, yang tidak suka framework menginginkan kebebasan. Mereka ingin fleksibilitas dan kendali penuh atas apa yang mereka kerjakan.

Saya sendiri termasuk programmer yang lebih memilih menggunakan framework. Alasannya sederhana: tidak ingin repot.

Namun pada kenyataannya, framework sendiri juga ada yang terlalu kompleks hingga bisa dibilang merepotkan untuk projek sederhana. Beberapa framework web (fullstack) yang pernah saya coba diantaranya: CodeIgniter, Laravel, Django, Nextjs, Feathersjs, dan Sailsjs (microframework dan library tidak saya sebutkan). Tentunya tidak semua framework tersebut sudah saya kuasai, namun sudah cukup paham mengenai “Design Pattern” dari masing-masing framework tersebut.

Framework pertama yang pernah saya pakai adalah CodeIgniter dulu ketika masih menjadi mahasiswa. Pola MVC yang ditawarkan sangat memudahkan bagi orang yang baru pertama terjun ke dunia pemrogramman web.

Kemudian beberapa hari yang lalu ada permintaan membuat web sederhana yang fokusnya untuk mengupload bukti pembayaran (file foto) dari ribuan pengguna, tentunya nodejs menjadi pilihan pertama saya mengingat penanganan input outputnya sangat baik. Framework seperti NextJs sepertinya terlalu kompleks untuk masalah ini, dan library seperti express configurasinya sangat merepotkan. Jadi saya mencoba mencari framework nodejs sederhana.

Ketemulah dengan Sails.js. Setelah melihat dokumentasi, dan beberapa tutorial di YouTube, framework ini menggunakan pola MVC yang sederhana langsung mengingatkan kepada CodeIgniter framework pertama yang saya pelajari.

Sails.js Vs Codeigniter

Langsung saja kita komparasikan keduanya.

Bahasa

Tidak perlu penjelasan panjang lebar, CodeIgniter menggunakan bahasa pemrograman PHP, sedangkan Sails.js menggunakan Javascript pada NodeJs.

PHP memiliki pro dan kontranya sendiri, seperti masalah performa, dan keamanan. Namun masih banyak digunakan karena dukungan komunitas yang menggunakan PHP sangatlah besar selama bertahun-tahun.

NodeJs yang menggunakan javascript, memudahkan programmer fullstack untuk menulis frontend dan backend dalam satu bahasa yang sama. Performa yang ditawarkan juga sangat baik karena mendukung teknik async bawaan tanpa library tambahan.

Design Pattern

Kedua framework ini menggunakan pola MVC. Model bertugas untuk bertukar data dengan database, controller mengatur alur data antara view dan model, dan view adalah interaksi data dengan pengguna (user).

  • Model

Dibawah ini merupakan contoh Model blog. Untuk CI terlihat lebih panjang karena query harus dijabarkan terlebih dahulu dengan $this->db->…

Sedangkan untuk Sails telah memiliki Waterline ORM sehingga tidak dibutuhkan function tambahan.

  • Controller

Untuk controller pada CI 3 sangat simple seperti contoh dibawah. Controller ini akan menampilkan view bernama ‘blogview’. Data bisa di kirim ke view dengan $this->load->view(‘blogview’, [‘pesan’=>”hello World!”]);

Pada sailsjs, tidak menggunakan class melainkan export object. View yang ditampilkan adalah ‘pages/blog’. Jika ada data yang mau dikirim ke view bisa ditambahkan pada return {pesan: “hello World!”}.

  • View

CI melakukan Rendering dengan bantuan PHP, dimana variabel $pesan dikirim dari controller.

Untuk Sails.Js agak berbeda. Secara default sails memiliki tools bernama parsails yang menggunakan Vue.js sehingga tidak memerlukan konfigurasi tambahan untuk menggunakan library frontend.

Ketika membuat View baru, kita dianjurkan untuk menambahkan beberapa file asset penyerta, yaitu assets/js/pages/*.js untuk lifecycle vue, assets/styles/pages/*.less untuk styling sass, dan file views/pages/*.ejs untuk view nya. Untuk menghemat tempat saya menggabungkan ketiganya menjadi satu gist.

View pada sails sedikit lebih kompleks karena telah menggunakan Vue.js

  • Routing

Terakhir yang perlu dibahas adalah routing. Pada CI 3, routing sudah automatis disesuaikan dengan controller dengan urutan:

example.com/blog/index/1/

Url dengan blog adalah nama class controller, index adalah function dan 1 (parameter) bisa mengakses controller. Cara lainnya yaitu menggunakan route pada file routes dengan mendefinisikan:

//application/config/routes.php
$route['blog/:num'] = 'blog/index/$id'; //example.com/blog/1/

Untuk Sails.Js, routing wajib di definisikan pada file config/routes.js. Dimana harus eksplisit metode HTTP yang digunank, url, dan controllernya.

Contoh: Metodenya adalah GET, urlnya adalah /blog/:id, dan controllernya view-blog.js

'GET /blog/:id': { action: 'view-blog' }, //example.com/blog/1/

Penutup

Dari penjelasan panjang ini, perbedaan keduanya bisa dibilang cukup banyak. Namun kenapa saya mengatakan mirip? Titik beratnya ada pada simplisitas keduanya. Ada beberapa bagian pada CI yang lebih sederhana, begitu juga dengan Sails.Js.

Keduanya menawarkan pattern/pola MVC yang sederhana dengan kelebihan dan kekurangan masing-masing. Dan disini saya merasa Sails.js adalah alternative terbaik untuk Codeigniter karena kompleksitasnya tidak berbeda jauh jika membutuhkan NodeJs dan bukan PHP. Kedua framework ini hanyalah tools yang belum tentu dapat menyelesaikan masalahmu. Dan sangat mungkin kalian membutuhkan tools yang berbeda.

Sekian saja dari saya. Jelas sekali tulisan ini banyak kekurangannya. Semoga dapat sedikit membantu menemukan apapun yang kalian cari.

--

--