Memilih framework yang berbasis javascript dengan model MVC bisa menjadi pekerjaan yang memberatkan. Di dunia internet, tersedia banyak framework yang dapat digunakan. Tentu saja kita memiliki pertimbangan yang tidak sedikit untuk memilih satu dari mereka. Sekilas, kita dapat menelik pada aplikasi TodoMVC untuk mendapatkan insight alternatif yang memungkinkan dari semua framework yang ada. Namun pada artikel ini, saya akan coba bahas tentang dua framework javascript - MVC, yaitu antara Angular.js dan Ember.js
Pada pembahasan kali ini, kita akan bahas dalam beberapa faktor seperti fitur yang disediakan oleh setiap framework, flexibility ketersediaan library pendukung terhadap setiap framework, dokumentasi yang tersedia, produktivitas developer, komunitas pendukung, ukuran file, performa dan maturity. Berikut adalah hasil dari percobaan yang saya lakukan sendiri terhadap setiap framework.
Fitur
Fitur merupakan hal yang penting bagi sebuah framework untuk mendukung dasar dalam pembuatan sebuah aplikasi. Apakah itu view binding, filter, computed properties, attributes, form validation, dan sebagainya yang mana dapat kita list sepanjang mungkin. Namun kita akan liat secara umum dari 6 fitur yang seharusnya ada pada setiap framework.
- Observables
Kita dapat melihat dan mengetahui perubahan pada suatu object. - Routing
Bagaimana perubahan yang terjadi ketika url dengan hash berubah dan bagaimana javascript menerima perintah tersebut. - View Bindings
Apakah views berubah secara otomatis ketika terjadi perubahan pada object - Two Way Bindings
Bagaimana views dapat melakukan perubahan pada object dan secara otomatis melakukan observe pada object - Partial Views
Views dapat di-include pada views lainnya. - Filtered List Views
Pemunculan object pada views dapat difilter berdasarkan kriteria yang ditentukan
Angular dan Ember memiliki keenam fitur tersebut secara mendasar. Tentusaja dengan cara yang berbeda. Namun pada Backbone saya hanya menemukan dua hal saja bahwa obejct dapat diobserve dan routing. Sementara untuk binding dan partial view, secara mendasar Backbone tidak menyediakan fitur tersebut. Itu dapat dilakukan dengan cara kita sendiri dan sangat memakan waktu.
Flexibility
Ada banyak plugin dan library yang bagus tersedia secara spesifik untuk dapat digunakan pada MVC framework. Plugin atau library tersebut biasanya dapat memenuhi kebutuhan kita yang tidak disediakan secara langsung oleh framework. Jadi sangat penting bagi framework untuk dapat terintegrasi dengan plugin dan library tersebut.
Backbone yang keluar terlebih dahulu memiliki banyak plugin dan library yang disediakan mengingat secara fitur bawaan framework tersebut kurang memadai. Ketika diintegrasikan pada beberapa penerapan aplikasi, tidak banyak pembahasan mengenai hal tersebut.
Angular dan Ember masih framework yang flexible pada beberapa penerapan aplikasi. Pada suatu titik kita akan berfikir bahwa lebih baik tidak berkecimpung dengan framework tersebut ketika kita tidak suka caranya bekerja.
Learning and Documentations
Angular memiliki faktor "wow" yang sangat tinggi di awal peluncurannya. Angular dapat melakukan beberapa hal menakjubkan - seperti binding dua arah - tanpa harus belajar banyak. Dan itu terlihat cukup mudah pada pandangan pertama. Tapi setelah Anda cukup belajar dasar-dasar penggunaannya, kurva belajar Anda akan curam dari sana. Ini adalah kerangka kerja yang kompleks dengan banyak keanehan. Membaca dokumentasi tidak mudah karena ada banyak istilah tertentu dan keterbatasan contoh penerapan.
Pada dasarnya Backbone cukup mudah dipelajari. Tapi setelah Anda menemukan bahwa tidak ada cukup opini yang tersedia untuk mengetahui bagaimana struktur terbaik source code Anda. Anda akan perlu menonton atau membaca beberapa tutorial untuk mempelajari beberapa praktek Backbone terbaik. Juga Anda akan menemukan bahwa Anda mungkin akan perlu belajar perpustakaan lain di atas Backbone (misalnya Marionette vs Thorax) untuk menyelesaikan sesuatu. Jadi saya tidak menganggap Backbone kerangka yang mudah untuk belajar.
Ember juga memiliki kurva belajar yang curam seperti Angular. Saya percaya bahwa belajar Ember lebih mudah daripada Angular tetapi membutuhkan waktu pembelajaran yang lebih tinggi di awal untuk mendapatkan hal-hal dasar yang dilakukan. Angular mungkin berbeda, memungkinkan Anda melakukan beberapa hal menakjubkan tanpa belajar terlalu banyak. Ember tidak memiliki awal yang "wow" faktor ini.
Secara dokumentasi, Ember dan Angular menyediakan dokumentasi yang lengkap dan mudah dipahami untuk penerapannya dari pada Backbone menurut saya.
Developer Productivity
Setelah Anda belajar framework dengan baik, mengetahui apa yang sebenarnya penting menetukan seberapa produktif Anda dengan framework tersebut. Anda akan mengetahui magic pada setiap framework yang anda gunakan ketika Anda banyak melakukan percobaan dan berbagi pengalaman dengan orang lain. Itu akan membantu Anda memahami framework dan membantu Anda bekerja dengan cepat.
Setelah Anda mengenal Angular dengan baik Anda akan bisa sangat produktif dengan itu, tidak ada keraguan mengenai hal tersebut. Hanya saja Angular tidak mendapatkan posisi tertinggi karena saya berpikir bahwa Ember telah selangkah lebih maju dalam kategori ini.
Backbone mengharuskan Anda untuk menulis banyak kode, yang saya pikir benar-benar tidak perlu. Ini menurut pendapat saya dan merupakan ancaman langsung terhadap produktivitas pengembang.
Ember benar-benar bersinar di sini. Karena penuh dengan konvensi yang kuat. Hal tersebut dapat membuat Ember melakukan banyak hal magic untuk Anda. Yang perlu Anda lakukan adalah belajar dan menerapkan konvensi dan Ember akan melakukan hal yang benar untuk Anda.
Community
Seberapa mudah Anda menemukan pertolongan ketika menemukan error atau bugs? Seberapa mudah Anda mendapatkan tutorial dan orang yang expert dibidang tersebut?
Komunitas Backbone sangat besar, tidak ada keraguan tentang itu. Anda dapat menemukan puluhan tutorial tentang Backbone. Komunitas Backbone sangat aktif di StackOverflow dan IRC.
Masyarakat Angular dan Ember cukup besar juga. Juga banyak tutorial dan aktivitas di StackOverflow dan IRC, tapi tidak sebanyak Backbone.
Size
Ini mungkin menjadi hal yang penting untuk diperhatikan. Apalagi ketika Anda melakukan mobile development.
Secara ukuran dasar file, Backbone 18kb, Angular 80kb, dan Ember 141kb. Backbone merupakan framework dengan ukuran file terkecil, tapi kita tidak berhenti di sana saja bukan?
Angular dengan 80kb dapat bekerja dan digunakan tanpa mengharuskan kita menggunakan library lainnya. Backbone membutuhkan setidaknya Underscore dan Zepto atau Node.js serta Mustache untuk dapat bekerja dengan baik dan digunakan saat pengembangan. Tidak terlalu besar dari segi ukuran, hanya 61kb. Ember butuh jQuery dan Handlebars yang mana ukuran filenya 269kb.
Performance
Saya tidak menganggap kinerja menjadi faktor penting dalam memilih framework karena mereka semua cukup performant untuk sebagian besar hal-hal yang akan digunakan untuk mereka. Tapi ini tentu saja tergantung pada apa yang Anda lakukan dengan framework tersebut. Jika Anda sedang membangun sebuah game, performa harus menjadi pertimbangan besar. Begitu juga dengan ketika Anda membangun sebuah aplikasi yang banyak interaksi dan conversation, performa menjadi pertimbangan tertentu.
Ember memiliki performa yang agak kurang ketika dihadapkan pada largest data object. Namun tak lebih buruk dibanding Backbone. Angular memiliki cara yang licik ketika berhadapan dengan largest data object sehingga selangkah lebih baik dari pada lainnya.
Maturity
Apakah ini suatu framework yang matang? Apakah itu telah terbukti dalam pengembangan, ada berapa banyak situs web yang menggunakannya?
Backbone memiliki satu ton website yang dibangun menggunakan framework tersebut. Basis kodenya yang tidak memiliki perubahan besar dalam kurun dua tahun yang merupakan hal yang besar dari perspektif maturity.
Meskipun Ember tidak yang terbaru, ia telah memiliki perubahan besar sepanjang tahun berjalan, hanya mencapai bentuk stabil dalam beberapa bulan terakhir. Jadi saat ini saya tidak menganggap untuk menjadi kerangka yang matang.
Angular tampaknya lebih stabil dan terbukti dari Ember. Tapi tidak sematang Backbone.
Memory Leak Safety
Ini merupakan pertimbangan penting jika Anda sedang membangun aplikasi dengan halaman yang tetap terbuka dalam waktu yang lama. Anda tidak ingin aplikasi Anda untuk kebocoran memori, ini bisa menjadi masalah yang nyata. Sayangnya ini bisa terjadi dengan mudah, khususnya jika Anda membuat listeners untuk DOM events secara manual.
Angular dan Ember akan menangani hal ini secara efektif selama Anda mengikuti praktek-praktek terbaik mereka. Backbone di sisi lain mengharuskan Anda untuk melakukan pekerjaan ini secara manual dalam metode teardown.
Penutup
Sebagai penutup pada sesi kali ini, mungkin pertanyaan berikut dapat membantu Anda memutuskan untuk memakai framework apa.
- Anda suka deklaratif HTML?
Lebih baik gunakan Angular - Anda suka menggunakan template engine?
Gunakan Backbone atau Ember - Anda suka framework yang dogmatis?
Ember tersedia untuk Anda - Anda ingin menggunakan framework yang terlihat keren seketika?
Tinggal pilih Angular atau Ember
Apapun framework yang Anda gunakan, pertimbangkan lah beberapa faktor yang sudah dijelaskan diatas. Tentu saja Anda juga melihat dari segi kebutuhan pengembangan Anda sendiri. Perlu Anda ingat bahwa tidak ada framework yang benar-benar sempurna, hanya ada framework yang cocok untuk Anda.
Sekian dari saya, semoga bermanfaat.
Baca juga: Perjalanan Panjang Bersama Ember.js
ConversionConversion EmoticonEmoticon