Membuat Aplikasi Web Dengan Node js, Express dan Handlebars

Node js series kali ini tentang membuat aplikasi web dengan bantuan template engine yaitu handlebars.

Dengan sebuah template engine, aplikasi kita akan menjadi lebih jelas perbedaan controller model dan view nya serta lebih konsisten pembagiannya.

Dalam contoh project kali ini kita akan pakai windows sebagai operating systemnya.

Yang dibutuhkan adalah:

  • Komputer yang sudah terinstal node dan npm. Cara cek nya, buka command prompt dan ketik node -v dan npm -v. jika keduanya menampilkan versi yang sudah terinstall, maka berarti di komputer tersebut sudah terinstall node dan npm. Selanjutnya kita siap untuk membuat projectnya. udah, ini aja intinya

Package yang dipakai

  • express
  • express-handlebars

Coding part:

  1. Buat directory projectnya.
  2. Masuk ke directory project.
  3. Buka command prompt dan masuk ke directory project.
  4. tulis npm init, untuk menginisiasi project dan membuat file package.json, file yang berisi preperties dari project termasuk catatan dependencies.
  5. Install express dengan menulis pada command promp
    > npm install express --save
  6. Install express-handlebars dengan menulis pada command prompt
    > npm install express-handlebars --save
  7. Buat file server.js. File ini sebagai file utama untuk menjalankan aplikasi webnya. Kalau di html atau php ini seperti index.html atau index.php nya. Tapi nama untuk node js ini bebas, cuma biasanya server.js atau app.js.
    const path = require('path')
    const express = require('express')
    const hbs = require('express-handlebars')
    
    const app = express()
    
    // set port
    app.set('port', (process.env.PORT || 2000))
    
    // view engine setup
    app.engine('hbs', hbs({
    	extname: 'hbs',
    	defaultLayout: 'layout',
    	layoutsDir: path.join(__dirname, 'views')
    }))
    app.set('views', path.join(__dirname, 'views'))
    app.set('view engine', 'hbs')
    
    //static file
    app.use(express.static('static'))
    
    const routes = require('./routes/routes.js')(app)
    
    app.listen(app.get('port'), ()=>{
    	console.log('server running at port 2000')
    })
  8. Buat directory routes
  9. Masuk ke directory routes dan buat file routes.js. File routes.js ini untuk menyimpan settingan routing. Routing ini untuk mengarahkan ketika pengunjung website mengetikkan nama alamat, maka sistemnya harus ngapain, dan memberikan respon  apa yang harus ditampilkan ke pengunjung.
    const data = require('../models/data.json')
    
    const pages = app=>{
    
    	// handle view engine
    	const handleGetHBS = (req,res)=>{
    		res.render('index', {
    			items : data
    		})
    	}
    
    	const handleGetRoot = (req,res)=>{
    		res.send('hello world')
    	}
    
    	//routes
    	app.get('/', handleGetRoot)
    	app.get('/hbs', handleGetHBS)
    
    }
    
    module.exports = pages

    Pada baris nomer satu diatas, itu memanggil file yang ada di directory models. File ini adalah file json sebagai penggambaran data dari database, atau dalam contoh project ini sebagai pengganti database.

  10. Buat directory views untuk menampung file template handlebars.
  11. Dalam directory views, buat file layout.hbs yang berisi:
    <!doctype html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>{{ title }}</title>
    	<link rel="stylesheet" href="/css/style.css">
    </head>
    <body>
    	{{{ body }}}
    </body>
    </html>
  12. Dalam directory views, buat file index.hbs yang berisi:
    {{# each items}}
    	<h1>{{title}}</h1>
    	<p>{{body}}</p>
    {{/each}}
  13. Jalankan applikasi dengan mengetik perintah di command prompt
    > node server.js
  14. Buka browser dan ketik pada address bar http://localhost:2000/hbs
    disini kita akan melihat hasil dari applikasi node js kita menggunakan template engine handlebars.

Source code project ini bisa dibuka di account github saya:

https://github.com/alfannas/node-handlebars

Node js Hello World

Ini adalah postingan pertama tentang node js. Mudah mudahan nanti ada serial post tentang node js ini. Yang sudah kebayang adalah

  • Node js + Express : untuk node dan routing
  • Node js + Express + Handlebars : untuk node , routing dan memanfaatkan template engine
  • Node js + Express + MongoDB : untuk membangun API dengan node js
  • Node js + Heroku: Deploy node app di heroku

Baiklah, untuk node kali ini saya mau buat app sederhana untuk menampilkan hello world dari node dan ditampilkan di browser.

Instalasi

Yang diperlukan dalam app ini hanya node js saja dan tentu saja browser. Tidak ada module atau plugin tambahan. Cukup node js yang sudah terinstall di komputer.

Untuk instalasinya tinggal buka website node js dan silahkan download file instalasi yang sesuai dengan operating system.

cek instalasi node dengan mengetik perintah di command prompt atau cmd untuk melihat versi node yang terinstall:

node -v

Cek juga untuk npm nya, untuk memastikan npm nya juga terinstall. npm ini satu bundle dengan installasi node, jadi tidak perlu install terpisah.

npm -v

kalau berhasil muncul versinya, berarti node dan npm sudah terinstall dengan benar.

Let’s Code

Bagian coding ini sangat sederhana. Hanya ada satu file yang akan kita buat.

1. Buat folder project

buat folder atau directory project untuk menampung file project kita.

2. Buat file project

Buat file yang berisi code project node kita. Untuk kali ini kita buat dengan nama server.js  dan simpan di dalam folder project kita. Tulis kode seperti dibawah ini.

const http = require('http');

http.createServer(function(req,res){
	res.writeHead(200,{
		'Content-Type' : 'text/html'
	})
	res.end('hello world')
}).listen(3000, '127.0.0.1');

console.log('node stating at http://127.0.0.1:3000');
3. Jalankan applikasi

Jalankan aplikasi dalam project kita dengan masuk ke command prompt atau cmd dengan command:

node server.js

tentu saja sebelum menjalankan periintah di atas, kita harus berada di direktori project kita.

4. Melihat hasil aplikasi

Setelah kita jalankan perintah diatas, maka kalau tidak ada error, dalam command prompt akan muncul text:

node stating at http://127.0.0.1:3000

sesuai dengan code yang kita tuliskan sebelumnya.

Setelah itu kita cek browser dengan membuka alamat

http://127.0.0.1:3000

dalam layar akan muncul text ‘hello world’

Repo Github: https://github.com/alfannas/node-hello

Pindah dan Extend Partisi Drive C: Windows 7

Beberapa hari ini agak dipusingkan dengan laptop thinkpad saya yang makin habis spacenya. Berbagai cara sudah dilakukan untuk mengosongkan disk. Tapi, belum ada penambahan space yang signifikan.

Susahnya pakai SSD itu ya gini, harus rela dengan space yang relative kecil dibandingkan dengan HDD untuk harga yang sama.

Awalnya dulu saya kasih untuk drive windows (C) dengan space 50GB. Pada waktu itu mungkin cukup untuk menyimpan sistem operasi dan file program. Makin kesini ternyata makin menipis dengan jumlah program yang tidak terlalu nambah. Artinya, programnya ya itu-itu aja. Datanya mungkin yang nambah.

Sempat kepikiran untuk install ulang tapi kebatang banyaknya proses dan lamanya proses jadi males dan mengesampingkan opsi ini.

Nyari opsi untuk extend drive C dengan mengurangi space Drive D supaya bisa dipakai sama drive C. Ketemu software untuk melakukannya ternyata harus bayar. Pakai tools bawaan windows yang manage disk itu tidak bisa dipakai.

Kebetulan posisi drive C ini paling kanan kalau dilihat di disk management bawaan windows. Sementara posisi drive D ada di paling kiri. Di tengah-tengah ada drive lain. Jadi harus pakai tools tambahan.

Coba cari tools lagi ketemu software namanya “MiniTool Partition Wizard” Untungnya software ini gratis. Saya mencoba menghindari menggunakan software cracked. Sebenarnya kepikiran partition magic yang dulu pernah dipakai, tapi bayar, gak jadi.

Ok, akhirnya ketemu solusi pakai tool ini. Drive C digeser ke kiri, drive D digeser sebelah kanannya. Drive D dihapus/delete. Kemudian extend drive C. Proses Terakhir tinggal click apply.

Ada peringatan kalau akan restart dan lain sebagainya. Maklum sih karna yang diproses drive operating system, pasti membutuhkan proses yang lebih dasar lagi.

Sempet khawatir gak berhasil entah karena gagal geser posisi drive, file corrupt, dll.. Setelah dengan sabar menunggu proses yang cukup lama, akhirnya nyala windows nya. Alhamdulillah berhasil.

Mungkin ada yang membutuhkan solusi yang sama terkait partisi hard disk, bisa dicoba software ini. Kebetulan saya hanya mencoba fitur untuk geser dan extend partisi saja. Masih ada fitur-fitur yang lain yang bisa dicoba.

Apa itu ES6?

Apa sih ES6 itu? jadi bertanya-tanya, soalnya sering disebut di berbagai diskusi app development.

Dari beberapa sumber saya simpulkan, ES6 itu adalah singkatan dari ECMAScript 6. ECMAScript adalah nama lain atau penyebutan yang lebih ‘formal’ untuk JavaScript. Sedangkan angka 6 berarti ya versinya.

Apa ada versi sebelumnya? ternyata ada.

Saya explore beberapa situs dan ada yang menuliskan history dari javascript. ini saya copycan dari sumber disini:

  1. 1995: JavaScript is born as LiveScript
  2. 1997: ECMAScript standard is established
  3. 1999: ES3 comes out and IE5 is all the rage
  4. 2000–2005: XMLHttpRequest, a.k.a. AJAX, gains popularity in app such as Outlook Web Access (2000) and Oddpost (2002), Gmail (2004) and Google Maps (2005).
  5. 2009: ES5 comes out (this is what most of us use now) with forEachObject.keysObject.create (specially for Douglas Crockford), and standard JSON
  6. 2015: ES6/ECMAScript2015 comes out; it has mostly syntactic sugar, because people weren’t able to agree on anything more ground breaking (ES7?)

Di sumber diatas juga dijelaskan perbedaan ES6 dengan javascript tipe sebelumnya, tapi intinya yang paling kelihatan adalah perbedaan syntax nya.

Karena beberapa browser, terutama yang versi lama belum support ES6 maka dibutuhkan semacam compiler  agar compatible. Salah satunya si Bable.

Kira-kira seperti itu gambaran ES6 yang saya tangkap, mohon maaf jika ada yang kurang tepat.

Cara Apply Patch di Drupal

Ini ada video bagus untuk apply patch di drupal.

Apply patch biasanya untuk contributed module atau ada bug kemudian dari komunitas drupal memberikan update patch untuk mengatasi bug tersebut.

File patch drupal berbentuk ekstensi .patch

Berikut videonya

Saya mggunakan git dan perintah curl untuk apply patch di komputer saya yang berbasis windows.

Masuk ke folder module drupal yang ingin kita apply patch nya di komputer lokal kita, dan masuk ke dalam git bash.

ketik perintah

curl <link ke file patch> | patch -p1

tunggu sebentar dan akan ada notifikasi sukses update patch.