7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Web Development

Node.js untuk Pemula

Scroll to top
Read Time: 12 mins

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Pemrograman berbasis event bisa sangat luar biasa untuk pemula, yang bisa membuat Node.js sulit untuk dimulai. Tapi jangan biarkan hal itu menghalangi Anda; Pada artikel ini, saya akan mengajarkan beberapa dasar-dasar Node.js dan menjelaskan mengapa ia menjadi sangat populer.

Perkenalan

Untuk mulai menggunakan Node.js, Anda harus terlebih dahulu memahami perbedaan antara Node.js dan lingkungan skrip sisi-server tradisional (misalnya: PHP, Python, Ruby, dll.).

Pemrograman Asinkron

Node.js menggunakan arsitektur modul untuk mempermudah pembuatan aplikasi yang kompleks.

Kemungkinan bagus bahwa Anda terbiasa dengan pemrograman asinkron; itu, setelah semua, "A" di Ajax. Setiap fungsi di Node.js bersifat asinkron. Oleh karena itu, semua yang biasanya memblokir thread malah dieksekusi di latar belakang. Ini adalah hal terpenting untuk diingat tentang Node.js. Misalnya, jika Anda membaca file pada sistem file, Anda harus menentukan fungsi callback yang dijalankan ketika operasi baca selesai.

Anda yang Melakukan Segalanya!

Node.js hanyalah sebuah lingkungan - yang berarti Anda harus melakukan semuanya sendiri. Tidak ada server HTTP default, atau server apa pun dalam hal ini. Ini bisa sangat luar biasa bagi pengguna baru, tetapi hasilnya adalah aplikasi web berkinerja tinggi. Satu skrip menangani semua komunikasi dengan klien. Hal ini sangat mengurangi jumlah sumber daya yang digunakan oleh aplikasi. Sebagai contoh, berikut adalah kode untuk aplikasi Node.js sederhana:

Dan di sini adalah yang setara ditulis dalam PHP:

Sekarang mari kita lihat angka benchmarknya. Tabel berikut mencantumkan waktu respon, dalam milidetik, untuk dua aplikasi sederhana ini:

Jumlah iterasi Node.js PHP
100 2.00 0.14
10'000 3.00 10.53
1'000'000 15.00 1119.24
10'000'000 143.00 10621.46
1'000'000'000 11118.00 1036272.19

Saya menjalankan dua aplikasi dari baris perintah sehingga server tidak akan menunda eksekusi aplikasi. Saya menjalankan setiap tes sepuluh kali dan merata-rata hasilnya. PHP terutama lebih cepat dengan jumlah iterasi yang lebih sedikit, namun keuntungan itu cepat menghilang seiring bertambahnya jumlah iterasi. Ketika semua dikatakan dan dilakukan, PHP 93% lebih lambat dari Node.js!

Node.js cepat, tapi Anda perlu mempelajari beberapa hal agar bisa menggunakannya dengan benar.

Modul-modul

Node.js menggunakan arsitektur modul untuk mempermudah pembuatan aplikasi yang kompleks. Modul mirip dengan pustaka di C, atau unit dalam Pascal. Setiap modul berisi satu set fungsi yang terkait dengan "subjek" dari modul. Misalnya, modul http berisi fungsi khusus untuk HTTP. Node.js menyediakan beberapa modul inti di luar kotak untuk membantu Anda mengakses file pada sistem file, membuat server HTTP dan TCP/UDP, dan melakukan fungsi berguna lainnya.

Memasukkan modul itu mudah; cukup panggil fungsi require(), seperti ini:

Node.js hanyalah sebuah lingkungan; Anda yang harus melakukan semuanya sendiri.

Fungsi require() mengembalikan referensi ke modul yang ditentukan. Dalam kasus kode ini, referensi ke modul http disimpan dalam variabel http.

Dalam kode di atas, kami memberikan nama modul ke fungsi require(). Ini menyebabkan Node mencari folder node_modules di direktori aplikasi kita, dan mencari modul http di folder itu. Jika Node tidak menemukan folder node_modules (atau modul http di dalamnya), maka Node akan melihat melalui cache modul global. Anda juga dapat menentukan file yang sebenarnya dengan melewatkan path relatif atau absolut, seperti:

Modul adalah potongan kode yang dienkapsulasi. Kode dalam modul sebagian besar bersifat private - yang berarti bahwa fungsi dan variabel yang ditentukan di dalamnya hanya dapat diakses dari bagian dalam modul. Anda dapat, bagaimanapun, mengekspos fungsi dan/atau variabel yang akan digunakan di luar modul. Untuk melakukannya, gunakan objek exports dan isi properti dan metodenya dengan potongan kode yang ingin Anda paparkan. Perhatikan modul berikut ini sebagai contoh:

Kode ini menciptakan variabel PI yang hanya dapat diakses oleh kode yang terdapat dalam modul; tidak dapat diakses di luar modul. Selanjutnya, dua fungsi diciptakan pada objek exports. Fungsi-fungsi ini dapat diakses di luar modul karena mereka didefinisikan pada objek exports. Akibatnya, PI benar-benar terlindungi dari gangguan luar. Oleh karena itu, Anda dapat yakin bahwa area() dan circumference() akan selalu berperilaku sebagaimana mestinya (selama sebuah nilai diberikan untuk parameter r).

Lingkup Global

Node adalah lingkungan JavaScript yang berjalan di mesin JavaScript V8 dari Google. Dengan demikian, kita harus mengikuti praktik terbaik yang kita gunakan untuk pengembangan sisi-klien. Misalnya, kita harus menghindari menempatkan sesuatu ke dalam lingkup global. Itu, bagaimanapun, tidak selalu memungkinkan. Lingkup global di Node adalah GLOBAL (berlawanan dengan window di browser), dan Anda dapat dengan mudah membuat variabel global dari fungsi dengan menghilangkan kata kunci var, seperti ini:

Sekali lagi, globals harus dihindari sebisa mungkin. Jadi hati-hati dan ingatlah untuk menggunakan var saat mendeklarasikan sebuah variabel.

Instalasi

Tentu, kita perlu menginstal Node sebelum kita bisa menulis dan menjalankan sebuah aplikasi. Instalasinya sederhana, jika Anda menggunakan Windows atau OS X; situs nodejs.org menawarkan installer untuk sistem operasi tersebut. Untuk Linux, gunakan manajer paket. Buka terminal dan ketik:

atau:

Node.js berada di sid repositories; Anda mungkin perlu menambahkannya ke daftar sumber Anda:

Namun perlu diingat bahwa menginstal paket sid pada sistem yang lebih tua dapat merusak sistem Anda. Hati-hati, dan hapus /etc/apt/sources.list.d/sid.list setelah Anda selesai menginstal Node.

Memasang Modul Baru

Node.js memiliki manajer paket, yang disebut Node Package Manager (NPM). Ini otomatis diinstal dengan Node.js, dan Anda menggunakan NPM untuk menginstal modul baru. Untuk menginstal modul, buka terminal/command line Anda, navigasikan ke folder yang diinginkan, dan jalankan perintah berikut:

Tidak masalah OS apa yang Anda punya; perintah di atas akan menginstal modul yang Anda tentukan di tempat module_name.

Aplikasi Hello World

Tentu, skrip Node.js pertama kita akan mencetak teks 'Hello World!' ke konsol. Buat file yang bernama hello.js, dan ketik kode berikut:

Sekarang mari kita jalankan skripnya. Buka terminal/command line, arahkan ke folder yang berisi hello.js, dan jalankan perintah berikut:

Anda harus melihat 'Hello World!' ditampilkan di konsol.

Server HTTP

Mari beralih ke aplikasi yang lebih canggih; itu tidak serumit yang mungkin Anda pikirkan. Mari kita mulai dengan kode berikut. Baca komentarnya dan kemudian penjelasannya di bawah ini:

Kode ini sangat sederhana. Anda dapat mengirim lebih banyak data ke klien dengan menggunakan metode response.write() , namun Anda harus memanggilnya sebelum memanggil response.end(). Simpan kode ini sebagai http.js dan ketik ini ke konsol Anda:

Buka browser Anda dan navigasikan ke http://localhost:8080. Anda harus melihat teks "Hello HTTP!" di halaman.

Menangani Parameter URL

Seperti yang saya sebutkan sebelumnya, kita harus melakukan semuanya sendiri di Node, termasuk menguraikan argumen permintaan. Ini, bagaimanapun, cukup sederhana. Lihatlah kode berikut ini:

Kode ini menggunakan metode parse() dari modul url, modul inti Node.js, untuk mengubah URL permintaan ke sebuah objek. Objek yang dikembalikan memiliki properti query, yang mengambil parameter URL. Simpan file ini sebagai get.js dan jalankan dengan perintah berikut:

Lalu, navigasikan ke http://localhost:8080/?data=put_some_text_here di browser Anda. Tentu, mengubah nilai parameter data tidak akan merusak skrip.

Membaca dan Menulis File

Untuk mengatur file di Node, kita menggunakan modul fs (modul inti). Kita membaca dan menulis file menggunakan metode fs.readFile() dan fs.writeFile(). Saya akan menjelaskan argumen-argumennya setelah kode berikut:

Node.js memiliki manajer paket, yang disebut Node Package Manager (NPM). Ini otomatis dipasang dengan Node.js

Simpan ini sebagai files.js. Sebelum menjalankan skrip ini, buatlah sebuah file bernama test.txt di direktori yang sama dengan files.js.

Kode ini mendemokan metode fs.readFile() dan fs.writeFile(). Setiap kali server menerima permintaan, skrip tersebut membaca sebuah nomor dari file, menambahkan nomornya, dan menulis nomor baru ke file tersebut. Metode fs.readFile() menerima tiga argumen: nama file yang akan dibaca, pengkodean yang diharapkan, dan fungsi callback.

Menulis ke file, setidaknya dalam kasus ini, jauh lebih sederhana. Kita tidak perlu menunggu hasil apapun, meski Anda akan mengecek kesalahan dalam aplikasi nyata. Metode fs.writeFile() menerima nama file dan data sebagai argumen. Ini juga menerima argumen ketiga dan keempat (keduanya opsional) untuk menentukan fungsi pengkodean dan callback.

Sekarang, mari jalankan skrip ini dengan perintah berikut:

Buka di browser (http://localhost:8080) dan segarkan beberapa kali. Sekarang, Anda mungkin berpikir bahwa ada kesalahan dalam kode karena tampaknya meningkat dua kali. Ini bukan sebuah kesalahan. Setiap kali Anda meminta URL ini, dua permintaan dikirim ke server. Permintaan pertama dibuat secara otomatis oleh browser, yang meminta favicon.ico, dan tentu saja, permintaan kedua adalah untuk URL (http://localhost:8080).

Meski perilaku ini secara teknis bukan merupakan kesalahan, itu adalah perilaku yang tidak kita inginkan. Kita dapat memperbaikinya dengan mudah dengan memeriksa URL permintaan. Berikut adalah kode yang direvisi:

Ujilah sekarang; itu harus bekerja seperti yang diharapkan.

Mengakses Database MySQL

Sebagian besar teknologi sisi-server tradisional memiliki cara bawaan untuk menghubungkan dan melakukan kueri database. Dengan Node.js, Anda harus menginstal sebuah perpustakaan. Untuk tutorial ini, saya sudah memilih node-mysql yang stabil dan mudah digunakan. Nama lengkap dari modul ini adalah mysql@2.0.0-alpha2 (semuanya setelah @ adalah nomor versi). Buka konsol Anda, arahkan ke direktori tempat Anda menyimpan skrip Anda, dan jalankan perintah berikut:

Ini mengunduh dan menginstal modul, dan juga membuat folder node_modules di direktori saat ini. Sekarang mari kita lihat bagaimana kita bisa menggunakan ini dalam kode kita; lihat contoh berikut ini:

Melakukan kueri database dengan perpustakaan ini mudah; cukup masukkan string kueri dan fungsi callback. Dalam aplikasi nyata, Anda harus memeriksa apakah ada kesalahan (parameter error tidak akan menjadi undefined jika terjadi kesalahan) dan mengirim kode respons bergantung pada keberhasilan atau kegagalan kueri. Perhatikan juga bahwa kita telah menetapkan Content-Type menjadi x-application/json, yang merupakan tipe MIME yang valid untuk JSON. Parameter rows berisi hasil kueri, dan kita cukup mengonversi data dalam rows ke struktur JSON menggunakan metode JSON.stringify() .

Simpan file ini sebagai mysql.js, dan jalankan (jika Anda menginstal MySQL, yaitu):

Arahkan ke http://localhost:8080 di browser Anda, dan Anda harus diminta mengunduh file berformat JSON.

Kesimpulan

Setiap fungsi di Node.js bersifat asinkron.

Node.js membutuhkan kerja ekstra, tetapi hasil dari aplikasi yang cepat dan kuat sangat layak. Jika Anda tidak ingin melakukan semuanya pada tingkat terendah, Anda selalu dapat memilih beberapa kerangka kerja, seperti >Express, untuk mempermudah pengembangan aplikasi.

Node.js adalah teknologi yang menjanjikan dan pilihan yang sangat baik untuk aplikasi dengan beban tinggi. Ini telah dibuktikan oleh banyak perusahaan, seperti Microsoft, eBay, dan Yahoo. Jika Anda tidak yakin tentang hosting situs web/aplikasi Anda, Anda selalu dapat menggunakan solusi VPS murah atau berbagai layanan berbasis cloud, seperti Microsoft Azure dan Amazon EC2. Semua layanan ini menyediakan lingkungan terukur dengan harga yang wajar.

Jangan lupa untuk berkomentar jika ada pertanyaan!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.