Mencoba Belajar Framework Vue.js dan SPA-nya

Rian Yulianto W
Kode dan Kodean
Published in
7 min readMar 23, 2018
Gambar dari https://dev.to/remejuan/vuejs-first-impressions-dao

Beberapa minggu terakhir ini, saya mendapat kesempatan untuk belajar mengenal framework JavaScript yang sedang naik daun ini, dengan warna hijau sebagai warna dasarnya. Yaitu Vue.js versi 2.x . Lalu mengapa belajar Vue.js ? dan tidak belajar React atau lanjutkan saja belajar Angular saja ?

Sebenarnya saya belajar Vue.js juga karena tuntutan pekerjaan. Dimana saya mendapat tugas untuk membantu menulis kode dan mengecek kode dari sebuah project website. Project website ini sebelumnya menggunakan campuran antara jQuery dan React, namun karena suatu alasan, si pemilik project ini ingin memigrasikan website nya menjadi menggunakan Vue.js dan SPA. Alasannya yaitu si pemilik project ingin agar framework yang dipakai oleh websitenya menggunakan framework yang dikembangkan oleh komunitas, kemudian ingin agar kode-kodenya menjadi lebih mudah dibaca dan dipahami tim mereka, dan juga ingin beberapa library dikembangkan oleh komunitas yang sama (di dalam Vue ada seperti Vuex, Vue Router, Vue DevTools, integrasi ke CSS library, dst…) , dan alasan teknis yang lainnya.

Saya tidak akan membahas lebih lanjut mengenai project web tersebut apalagi sampai memberitahu link nya, karena merupakan rahasia pekerjaan dan klien juga. Tapi saya akan membahas proses pembelajaran saya dalam mengenal Vue ini.

Langsung Menggunakan Vue CLI

Pada halaman dokumentasi resminya tentang instalasi framnework Vue.js , memang cukup mudah. Library Vue.js dapat ditambahkan dengan menggunakan link dari CDN saja pada bagian head dari HTML .

Cukup simpel dan framework Vue pun bisa langsung dipakai di file index.html dan script yang dihubungkan ke index.html tersebut. Tapi kelemahan dari metode ini adalah sintaks atau kode JavaScript yang dipakai mesti menggunakan standard ES5 atau standard yang dimengerti oleh browser kebanyakan. Selain itu dengan metode ini , kita tidak bisa membuat komponen dalam format file .vue , membuat web dengan SPA (Single Page Application) , dan menikmati keajaiban dari code splitting dan kompresi file project oleh Webpack.

Untuk itu saya pun memilih menggunakan dan memasang Vue CLI yang sesuai dari dokumentasi di situs Vue nya.

Proses instalasinya cukup mudah dengan menggunakan NPM dari Node.js

Proses instalasi Vue CLI dan inisialisisasi project.

Dengan menggunakan Vue CLI ini, maka web yang dibuat menjadi mode Single Page Application (SPA) , bisa menggunakan komponen dengan format file .vue , dan juga beberapa fitur tambahan dengan adanya Webpack tadi. Sintaks JavaScript yang dipakai pun bisa menggunakan ES2015 ke atas atau ES6 , sehingga kode menjadi ringkas dan lebih rapi.

Separation Concern atau File Terpisah-pisah

Sewaktu saya menggunakan Angular versi terbaru yang menggunakan Angular CLI , salah satu fitur favorit saya adalah file-file untuk komponennya dipisah. Yaitu file TypeScript, HTML, dan CSS nya tidak dijadikan dalam satu file, tapi hanya dihubungkan melalui link referensi saja di dalam projectnya. Contohnya dapat dilihat pada screenshot di bawah ini :

File terpisah-pisah untuk membentuk satu komponen

Kelebihannya dari konsep terpisah ini adalah kode JavaScript/TypeScript , HTML, dan CSS tidak tercampur aduk dalam satu file. Yang mana tidak membuat semakin pusing jika kode-kode dari setiap jenis tersebut semakin panjang ke bawah.

Di dalam Vue, ada format file .vue yang di dalamnya ada gabungan template, script, dan style . Dimana untuk file template HTML, JavaScript, dan CSS nya tergabung dalam satu file.

Namun setelah saya baca-baca ke bawah dokumentasinya, file .vue ini mendukung separation concern (file) , dengan bantuan Webpack dan vue-loader , yang akan terpasang otomatis jika menggunakan template Vue CLI Webpack. File-file HTML, JS, dan CSS dapat dipisah dalam satu folder, kemudian di dalam file .vue tadi cukup dihubungkan saja dengan tag src .

File .vue yang HTML,JS,CSS masih tercampur (kiri) dengan file .vue yang HTML,JS,CSS sudah terpisah dan dihubungkan dengan SRC (kanan).

Struktur folder untuk satu komponen pun menjadi terpisah menjadi seperti gambar di bawah ini. Cukup memudahkan bagi saya untuk mengatur kode-kode dari Vue JS ini.

File JS, HTML, dan CSS yang telah terpisah menjadi file tersendiri

Mencari Sumber Latihan yang Tepat di Internet

Berikutnya adalah mencari sumber latihan yang bisa dipakai dari internet, referensi yang saya dapat adalah dari web dokumentasi resmi di

dan juga video latihan Youtube yang saya dapat dari channel Net Ninja ini :

Salah satu video latihan Vue.js yang berseri sampai selesai

Kemudian saya dapatkan juga video latihan dari channel Laracast berikut ini tentang Vue.js 2 .

Laracast Vue.js Tutorial

Saya pun mengikuti latihan dari video-video tersebut, sambil membuka referensi dokumentasi di situs Vue.js dan juga Mozilla Web Docs untuk bantuan referensi penulisan JavaScript ES2015 ke atas.

Lazy Loading Component dan Module Router yang Simpel

Masalah muncul ketika saya sudah mencapai beberapa latihan, dan membuka halaman latihan menjadi lambat karena komponen-komponen latihan sebelumnya langsung dimuat sekaligus. Setelah saya telusuri lebih lanjut ke dalam dokumentasi tentang Routing Navigation di Vue.js , terdapat metode lazy loading component untuk mempercepat memuat halaman. Ini dikarenakan router dan browser hanya akan memuat komponen yang dibutuhkan di dalam halaman yang sedang dibuka.

Mengaktifkan fitur Lazy Loading ini pun cukup mudah di dalam Vue.js , dan dengan bantuan compiler Webpack tentunya. Penulisan kode untuk memuat komponen secara malas ini cukup menggunakan fat arrow function yang menghasilkan Promise, bisa dilihat dibawah ini.

Membuat lazy loading dan lazy import untuk komponen di dalam router Vue.js

Dengan menggunakan penulisan tersebut, Webpack akan membacanya sebagai tanda untuk pemecahan kode js menjadi beberapa “chunk” atau pecahan. Tidak lupa kita berikan sebuah comment /* webpackChunkName: “nama_pecahan_kode_js” */ , sehingga ketika hasil build selesai, kita dapat melihat nama pecahan komponen dan juga ukurannya dari hasil compile Webpack tersebut. Contohnya dapat dilihat di gambar di bawah ini.

Hasil pemecahan kode oleh Webpack secara otomatis

Pecahan-pechan file JS tersebut akan dimuat pada halaman-halaman dan komponen yang membutuhkan ketika dibuka oleh browser. Pembuatan lazy loading untuk setiap komponen di Vue ini terbilang cukup simpel jika dibandingkan lazy loading di Angular yang selama ini saya pakai.

Masalah Ketika Deploy ke Github Pages

Dalam mengikuti latihan dari situs dan video Youtube di atas, hampir tidak ditemui masalah. Masalah-masalah yang muncul seperti penulisan yang salah menurut ESLint ataupun standard ES6 juga bisa diatasi dengan membuka situs dokumentasi ESLint dan Mozilla Web Docs . Masalah untuk mencoba memasukkan library CSS dan JS pihak ketiga juga sudah banyak ditemui di Stackoverflow dan situs-situs blog untuk mengatasi nya.
Tetapi ada masalah muncul, ketika saya ingin menaruh file-file hasil build di folder /dist hasil npm run build , ke dalam Github Pages. Masalah ini tidak muncul ketika saya deploy ke Firebase Hosting, tetapi muncul ketika saya coba taruh ke Github Pages.

Masalah yang muncul yaitu file-file .js , html, css, dan aset gambar tidak bisa dimuat karena link referensi nya salah. Error yang muncul di konsol browser, ketika di cek, yaitu Error 404 atau Not Found (https://http.cat/404).

Setelah ditelusuri, diketahui masalahnya adalah base href url dan juga assetsPublicPath nya yang perlu disetel. Yang saya dapatkan dari referensi nya juga disini :

Saya membuka file yang ada di folder config/index.js , kemudian pada bagian object build di assetsPublicPath perlu diganti sesuai dengan nama repository Github tempat Github Pages itu akan berjalan.

Setelan konfigurasi untuk base url dan alamat folder assets JS/CSS/HTML nya.

Setelah itu disetel, kemudian jalankan npm run build . Kemudian isi folder /dist tadi kita unggah ke repository Github yang akan menjadi Github Pages . Hasilnya dari Github Pages yang berisi hasil latihan dapat dilihat dan diakses disini https://gulajavaministudio.github.io/demo-latihan-vues/#/ :

Sekilas tampilan situs sederhana yang merupakan demo hasil belajar dari video tutorial di Youtube

Saya juga sudah taruh kode sumber aplikasi web yang berisi demo-demo sederhana dan tidak jelas, hasil belajar mengikuti latihan video tutorial , ke dalam Github Public ini.

Akhir kata…

Demikian tulisan singkat tentang pengalaman mencoba framework Vue.js . Saya lihat framework ini memiliki potensi yang besar untuk situs-situs web dengan skala menengah sampai simpel. Dimana performa hasil nya cukup cepat dan sintaks kodenya juga sederhana. Ke depan mungkin akan saya coba mempelajari state management Vuex , masih menggunakan referensi yang sama dari kanal Youtube NetNinja di atas.

--

--

Rian Yulianto W
Kode dan Kodean

Suka pada yang simpel dan berguna. Suka sama penguin dan apel, tapi ga suka sama jendela.