---
title: Tentang Node.js®
layout: about
---

# Tentang Node.js®

Sebagai runtime JavaScript berbasis peristiwa asinkron, Node.js dirancang untuk membangun
aplikasi jaringan yang dapat diskalakan. Dalam contoh "Hello World" berikut, banyak
koneksi dapat ditangani secara bersamaan. Pada setiap koneksi, panggilan baliknya adalah
dipecat, tetapi jika tidak ada pekerjaan yang harus dilakukan, Node.js akan tidur.

```cjs
const { createServer } = require('node:http');

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
```

```mjs
import { createServer } from 'node:http';

const hostname = '127.0.0.1';
const port = 3000;

const server = createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
```

Ini berbeda dengan model konkurensi yang lebih umum saat ini, di mana utas OS
dipekerjakan. Jaringan berbasis thread relatif tidak efisien dan sangat
sulit untuk digunakan. Selain itu, pengguna Node.js bebas dari kekhawatiran
dead-locking proses, karena tidak ada kunci. Hampir tidak ada fungsi di
Node.js langsung melakukan I/O, jadi proses tidak pernah memblokir kecuali saat I/O dilakukan menggunakan
metode sinkron dari pustaka standar Node.js. Karena tidak ada yang menghalangi, sistem yang dapat diskalakan sangat
masuk akal untuk dikembangkan di Node.js.

Jika ada beberapa bahasa yang kurang familiar, ada artikel lengkap tentang
[Blocking vs. Non-Blocking](/learn/asynchronous-work/overview-of-blocking-vs-non-blocking).

---

Node.js memiliki desain yang mirip dengan, dan dipengaruhi oleh, sistem seperti [Event Machine](https://github.com/eventmachine/eventmachine) Ruby dan [Twisted](https://twisted.org/) Python. Node.js membawa model acara sedikit lebih jauh. Ini menyajikan loop peristiwa sebagai konstruksi runtime, bukan sebagai perpustakaan. Di sistem lain, selalu ada panggilan pemblokiran untuk memulai perulangan peristiwa.
Biasanya, perilaku ditentukan melalui callback di awal skrip, dan di akhir skrip, server dimulai melalui panggilan pemblokiran seperti `EventMachine::run()`. Di Node.js, tidak ada panggilan start-the-event-loop. Node.js cukup memasuki loop acara setelah menjalankan skrip input. Node.js keluar dari loop peristiwa ketika tidak ada lagi callback yang harus dilakukan. Perilaku ini seperti JavaScript browser — loop peristiwa disembunyikan dari pengguna.

HTTP adalah warga negara kelas satu di Node.js, dirancang dengan streaming dan rendah
latensi dalam pikiran. Ini membuat Node.js sangat cocok untuk fondasi web
perpustakaan atau kerangka kerja.

Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banyak inti di lingkungan Anda. Proses anak dapat dihasilkan dengan menggunakan API [`child_process.fork()`](https://nodejs.org/api/child_process.html) kami, dan dirancang agar mudah untuk berkomunikasi. Dibangun di atas antarmuka yang sama adalah modul [`cluster`](https://nodejs.org/api/cluster.html), yang memungkinkan Anda berbagi soket antar proses untuk mengaktifkan penyeimbangan beban pada inti Anda.

## Sumber Daya Resmi Node.js

Untuk memastikan keaslian dan keamanan saat bekerja dengan Node.js, selalu gunakan sumber resmi. Hindari mempercayai email, biner, atau unduhan dari sumber yang tidak resmi.

### Website Node.js Resmi

Untuk mengunduh biner Node.js dan mengakses dokumentasi resmi gunakan website resmi kami:

- [nodejs.org](https://nodejs.org)
- [nodejs.dev](https://nodejs.dev) _(Dialihkan ke https://nodejs.org)_
- [iojs.org](https://iojs.org) _(Dialihkan ke https://nodejs.org)_

### Pakages (Paket) npm resmi

Tim Node.js memelihara cakupan paket npm resmi berikut:

- [`@node-core`](https://npmjs.com/~node-core)
- [`@pkgjs`](https://npmjs.com/~pkgjs)

Selain itu, tim Node.js mengelola paket yang diterbitkan oleh akun npm [`nodejs-foundation`](https://npmjs.com/~nodejs-foundation),
meskipun paket terkait Node.js lainnya (seperti [`undici`](https://www.npmjs.com/package/undici)) juga dapat dikelola oleh kontributor yang terkait erat dengan proyek.

Menggunakan paket dari tim Node.js menjamin bahwa Anda bekerja dengan komponen Node.js yang didukung secara resmi.

### Org GitHub Resmi

Node.js dan proyek terkait dikelola di bawah organisasi GitHub resmi berikut:

- [nodejs](https://github.com/nodejs)
- [pkgjs](https://github.com/pkgjs)

### Saluran Komunikasi Resmi

Node.js dan OpenJS Foundation berkomunikasi melalui berbagai saluran resmi dan yang didukung komunitas. Anda dapat menemukan detail tentang cara terlibat di halaman [Berpartisipasi](https://nodejs.org/id/about/get-involved).

### Melaporkan Masalah Situs Web dan downtimenya

Jika kamu mengalami masalah dengan situs web Node.js, laporkan di [repositori situs web Node.js](https://github.com/nodejs/nodejs.org/issues).
Untuk pembaruan terkini tentang gangguan, kunjungi [Cek Status Web Node.js](https://status.nodejs.org)._"Note: Dukungan hanya tersedia dalam bahasa Inggris Mohon Sesuaikan dengan Format yang diberikan"_
