Ngaji NodeJs

31
Ngaji NodeJs GLiB http://glibogor.or.id Minggu, 8 November 2015

Transcript of Ngaji NodeJs

Page 1: Ngaji NodeJs

Ngaji NodeJs

GLiBhttp://glibogor.or.id

Minggu, 8 November 2015

Page 2: Ngaji NodeJs

Javascript

● ECMA Script● Bahasa skrip, ada intreperter● Dynamic Type

Page 3: Ngaji NodeJs

NodeJS

● Bukan bahasa, bukan framework.● Jalan di atas mesin V8 dari Google● Terdiri dari :

– Runtime environment

– API / pustaka bawaan (beberapa berbeda dengan API / pustaka bawaan di peramban)

Page 4: Ngaji NodeJs

Mengapa?

● Sementara ini paling populer di statistik GitHub● Perkakas pengembangan front-end banyak

yang bergantung ke modul NPM● Bahasa yang sama depan belakang● Non-blocking IO● Asyik buat aplikasi berbasis jaringan (http,

websocket)

Page 5: Ngaji NodeJs

Mengapa jangan?

● Basis data relasional● Komputasi berat

Page 6: Ngaji NodeJs

Pasang

● Paket manajer dari sistem operasi (apt, yum, brew)

● NVM (Node Version Manager)● Kompilasi sendiri

Page 7: Ngaji NodeJs

Fungsi

var cetak = function(string){console.log(string);

}

cetak(“hai”);

Page 8: Ngaji NodeJs

Fungsi

var foo = false;

var assignTrue = function(){return true;

}

foo = assignTrue();

console.log(foo);

Page 9: Ngaji NodeJs

Fungsi

function cetak(string1, string2) {console.log(string1 + “ “ + string2);

}

cetak(“hai”, “kamu”);

cetak(1, “orang”);

Page 10: Ngaji NodeJs

Callback

var cetak = function(string, cb){console.log(string);if (cb) {

cb();}

}

cetak(“assalamualaikum\n”, function(){console.log(“waalaikumsalam\n”);

});

cetak(“hai\n”);

Page 11: Ngaji NodeJs

Callback

cetak(“assalamualaikum\n”, function(){cetak(“waalaikumsalam\n”, function(){

console.log(“kapan?\n”);});

});

Page 12: Ngaji NodeJs

Callback

var splitName = function(fullName, callback){ var firstName = fullName.split(“ “)[0]; var lastName = fullname.split(“ “)[1]; callback(firstName, lastName);}

splitName(“peregrin took”, function(first, last){console.log(first + “ “ + last);

})

Page 13: Ngaji NodeJs

Common Callback Pattern

var isOdd = function(int, cb){var err;var result;if (typeof int != “number”) {

err = new Error(“Not a number!”);return cb(err);

}if (int % 2 == 0) {

cb(null, true);} else (int % 2 == 1) {

cb(null, false);}

}

isOdd(function(err, result){if (err) {

return console.log(result);}console.log(result);

})

Page 14: Ngaji NodeJs

Callback Hell

cetak1(input, function(result){cetak2(result, function(result){

cetak3(result, function(result){cetak4(result, function(result){

cetak5(result, function(result){console.log(result);

});});

});});

});

Page 15: Ngaji NodeJs

var foo = function(input){return new Promise(function(resolve, reject){

var result;try {

// do something that has chance to throws an error} catch(err) {

return reject(err);}resolve(result);

})}

foo(input).then(function(result){

// Handle result}).catch(function(err){

// Handle error});

Promise

Page 16: Ngaji NodeJs

cetak(input).then(function(result){

return fungsi1(result);}).then(function(result){

return fungsi2(result);}).then(function(result){

return fungsi3(result);}).then(function(result){

return fungsi4(result);}).then(function(result){

return fungsi5(result);}).then(function(result){

console.log(result);}).catch(function(err){

// Handle error});

Page 17: Ngaji NodeJs

Sync vs Async

Page 18: Ngaji NodeJs

Sync

console.log(1);console.log(2);console.log(3);console.log(4);

var a = foo1();var b = foo2(a);var c = foo3(b);var d = foo4(c);

Page 19: Ngaji NodeJs

Async

console.log(1);getNumber(function(number){

console.log(number); // number = 2// do some thing ...

});console.log(3);console.log(4);

Page 20: Ngaji NodeJs

Async

var data = “hai kamu ~”;

sendSMS(data, function(err, result){// save sent sms to sent box,// notify sender// do some thing...

});

saveToDB(data, function(err, result){// emit a socket communication// do some thing other

});

Page 21: Ngaji NodeJs

Command Argument

console.log(process.argv[1]);

-------------------------------------

$ node cetak.js “halo”

Page 22: Ngaji NodeJs

Environment Variable

console.log(“Running on :”);console.log(process.env.HOST + “:” process.env.PORT);

-------------------------------------

$ HOST=10.0.0.1 PORT=3001 node index.js

Page 23: Ngaji NodeJs

fs APISync----------------------------------------------

var fs = require(“fs”);

var ls = fs.readdirSync(“./”);

Async----------------------------------------------

var fs = require(“fs”);var ls;fs.readdir(function(err, result){

if (err) {// Handle error

}ls = result;

})

Page 24: Ngaji NodeJs

Require

cetak.js–------------------------------------------

var cetak = function(){console.log(“yooo!”);

}

module.exports = cetak;

index.js-------------------------------------------

var cetak = require(“cetak”);

cetak();

Page 25: Ngaji NodeJs

Requirecetak.js–------------------------------------------

var hai = function(){console.log(“hai”);

}var halo = function(){

console.log(“halo”);}

exports.hai = hai;exports.halo = halo;

index.js-------------------------------------------

var cetak = require(“cetak”);

cetak.hai();

Page 26: Ngaji NodeJs

cetak.js–------------------------------------------

var Cetak = function(){}

Cetak.prototype.halo = function(){console.log(“halo”);

}

Cetak.prototype.hai = function(){console.log(“hai”);

}

module.exports = Cetak;

index.js-------------------------------------------

var Cetak = require(“cetak”);

var cetak = new Cetak();cetak.halo();

Page 27: Ngaji NodeJs

NPM

● npmjs.org

$ npm install wooosaaah

Page 28: Ngaji NodeJs

NPM

index.js-------------------------------------------

var md5 = require(“md5”);

md5(“hai”);

Page 29: Ngaji NodeJs

NPM

● npm init

● npm install --save namapaket

● npm install –save-dev namapaket

Page 30: Ngaji NodeJs

Bangun

● Webserver sederhana

Page 31: Ngaji NodeJs

Webserver

index.js-------------------------------------------

var express = require("express"), app = express();

app.get("/", function(req, res) { res.send("website webdong");});app.listen(3000, "localhost", function(){ console.log("Webnya udah jalandong");});