Tutorial Node.js dengan Contoh yang Bisa Dijalankan
Tutorial Node.js gratis dengan contoh yang berjalan di halaman: file, modul, event loop, server Express yang bisa kamu kirimi request, MongoDB, dan JWT. Edit kodenya dan jalankan lagi.
Mulai kursusMemulai
- Apa Itu Node.jsNode.js adalah runtime yang menjalankan JavaScript di luar browser, di server dan di terminal. Node.js bukan bahasa dan bukan framework: isinya V8, ditambah event loop, ditambah API untuk file, jaringan, dan proses.
- Node.js vs JavaScriptJavaScript adalah bahasanya; Node.js adalah program yang menjalankannya di luar browser. Sintaksnya sama persis, tetapi global dan API bawaan di sekitar kodemu berbeda.
- process.argvprocess.argv adalah array berisi command line yang menjalankan programmu: executable node, path script, lalu setiap argumen yang kamu ketik. Pakai process.argv.slice(2) untuk mendapat argumenmu saja.
- process.envprocess.env adalah object berisi environment variable yang ada saat program Node.js-mu dijalankan. Setiap nilainya string atau undefined, jadi ubah sendiri angka dan boolean, dan beri setiap variabel nilai default.
- Membaca Input UserNode.js tidak punya fungsi prompt(). Untuk mengajukan pertanyaan ke user di terminal, buat interface readline pada process.stdin lalu panggil question(), atau await dengan readline/promises.
File dan Path
- fs.readFileBaca file di Node.js dengan fs.readFile (callback), fs.readFileSync, atau await readFile dari fs/promises. Berikan 'utf8' untuk mendapat string, dan tangani ENOENT saat file tidak ada.
- fs.writeFileTulis file di Node.js dengan fs.writeFile, fs.writeFileSync, atau await writeFile dari fs/promises. File dibuat kalau belum ada dan diganti kalau sudah ada; pakai appendFile untuk menambah di akhir.
- fs/promisesfs/promises adalah versi promise dari module fs milik Node: readFile, writeFile, readdir, stat, mkdir, rm, dan rename semuanya mengembalikan promise yang kamu await, dan error ditangkap dengan try/catch.
- Module pathModule path menyusun dan membongkar path file dengan cara yang benar untuk sistem operasi. path.join menggabungkan segmen; path.resolve mengubahnya menjadi path absolut, dimulai dari folder saat ini.
Node Asinkron
- Event LoopEvent loop Node.js menjalankan callback-mu dalam beberapa fase (timers, poll, check, close), dan di antara setiap callback ia mengosongkan antrean process.nextTick lalu antrean promise. Jalankan contohnya untuk melihat urutan pastinya.
- EventEmitterEventEmitter dari module events milik Node memungkinkan sebuah object mengumumkan event bernama dengan emit, dan kode lain menanggapinya dengan on atau once. Listener berjalan secara synchronous, sesuai urutan pemasangannya.
HTTP dan Express
- HTTP server`http.createServer()` menerima satu fungsi yang berjalan untuk setiap request dengan `req` dan `res`. Kamu membaca method dan URL dari `req`, lalu mengatur status, header, dan body di `res` dan memanggil `res.end()`.
- Routing ExpressRoute di Express terdiri dari method, path, dan handler: `app.get('/users/:id', handler)`. Kelompokkan route yang berkaitan dalam `express.Router()` lalu pasang di bawah prefix dengan `app.use('/api', router)`.
- Middleware ExpressMiddleware Express adalah fungsi `(req, res, next)` yang berjalan sebelum route handler-mu. Middleware bisa membaca atau mengubah request, mengakhirinya dengan response, atau memanggil `next()` untuk meneruskannya.
- req.params, query, body`req.params` berisi bagian path yang diberi nama (`/users/:id`), `req.query` berisi query string (`?sort=new`), dan `req.body` berisi body request yang sudah di-parse, yang bernilai `undefined` sampai kamu menambahkan parser body seperti `express.json()`.
- Penanganan errorError handler Express adalah middleware dengan empat argumen, `(err, req, res, next)`, yang didaftarkan setelah route-mu. Express 5 mengirim ke sana error yang dilempar, panggilan `next(err)`, dan promise yang reject dari handler async.
- express.static`app.use(express.static(path.join(__dirname, 'public')))` menyajikan setiap file di folder `public` pada URL yang sesuai: `public/style.css` menjawab `/style.css`. Tambahkan mount path untuk menyajikannya di bawah sebuah prefix.
- CORS di ExpressError CORS berarti browser memblokir sebuah halaman membaca response API-mu karena response itu tidak mengizinkan origin halaman tersebut. Perbaiki di server dengan mengirim `Access-Control-Allow-Origin` dan menjawab request preflight `OPTIONS`, secara manual atau dengan package `cors`.
Data dan Autentikasi
- MongoDBPakai MongoDB dari Node.js dengan driver resmi mongodb: hubungkan dengan MongoClient, lalu insert, find, update, dan delete dokumen di sebuah collection, semuanya dengan async/await.
- JWTJWT adalah token bertanda tangan yang terdiri dari tiga bagian base64url, diterbitkan server saat login dan dicek di setiap request. Di Node.js kamu membuat dan memverifikasinya dengan package jose atau jsonwebtoken dan sebuah secret key.