Menu

PHP vs JavaScript: Server, Browser, dan Node.js

PHP berjalan di server dan mengirim HTML yang sudah jadi ke browser. JavaScript berjalan di browser, tempat ia mengubah halaman setelah dimuat, dan di server dengan Node.js. Sebagian besar website memakai keduanya: PHP untuk membuat halaman dan API, JavaScript untuk interaksi.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

PHP berjalan di server: PHP menyusun halaman, mengirim HTML yang sudah jadi, lalu berhenti. JavaScript berjalan di browser pengunjung, tempat ia merespons klik dan mengubah halaman setelah dimuat; dengan Node.js, JavaScript juga bisa berjalan di server. Jadi keduanya lebih tepat disebut rekan daripada saingan: situs pada umumnya memakai PHP (atau Node.js) di server dan JavaScript di browser.

Kode PHP ini berjalan di server. Browser hanya menerima apa yang dicetaknya, dan tab Halaman menampilkan hasilnya:

Lihat tab Output: tidak ada PHP yang tersisa di sana, hanya HTML. List yang sama yang dibuat oleh JavaScript di browser terlihat seperti ini:

const products = [
  { name: "Keyboard", price: 49 },
  { name: "Mouse", price: 19 },
  { name: "Monitor", price: 189 },
];

const ul = document.querySelector("#cart"); // an empty <ul id="cart"> in the HTML
for (const p of products) {
  const li = document.createElement("li");
  li.textContent = `${p.name}: $${p.price}`;
  ul.append(li);
}

Versi PHP mengirim halaman yang lengkap, yang langsung bisa dibaca mesin pencari dan ponsel yang lambat. Versi JavaScript bisa memperbarui list itu belakangan tanpa memuat ulang halaman, misalnya saat pengunjung menghapus sebuah item.

Tempat setiap bahasa berjalan

PHPJavaScript
Berjalan diweb server (atau terminal)browser, dan server dengan Node.js, Deno, atau Bun
Bisa melihatfile, database, environment, data rahasiahalaman (DOM), klik, penyimpanan browser
Masa hidupsatu kali jalan per requestselama halaman terbuka (browser), atau satu proses panjang (Node.js)
Tugas umummembuat halaman, menangani form, API, berkomunikasi dengan databaseinteraktivitas, pembaruan live, single-page app, server Node.js
Pengunjung bisa membaca kodenyatidakya, di browser

Baris terakhir penting untuk keamanan: apa pun yang ada di JavaScript browser terlihat oleh pengunjung, jadi password, API key, dan pemeriksaan harga harus berada di server.

Perbandingan sintaks

Kedua bahasa terlihat mirip karena sama-sama meminjam dari C: kurung kurawal, if, for, while, function, return. Perbedaannya ada di detail:

TugasPHPJavaScript
Variabel$name = "Ada";let name = "Ada";
Konstantaconst MAX = 10;const MAX = 10;
Menggabungkan string"Hi " . $name"Hi " + name
Template string"Hi $name"`Hi ${name}`
List["a", "b"]["a", "b"]
Key/value["id" => 1]{ id: 1 }
Panjangcount($list), strlen($s)list.length, s.length
Loopforeach ($list as $item)for (const item of list)
Arrow functionfn($x) => $x * 2(x) => x * 2
Mencetakecho "Hi";console.log("Hi");

Berikut sebuah fungsi dengan callback di PHP:

Dan di JavaScript, tempat map dan filter adalah method pada array:

const prices = [12.5, 8, 30, 4.25];

const withTax = prices.map((p) => Math.round(p * 1.2 * 100) / 100);
const cheap = withTax.filter((p) => p < 15);

console.log(withTax.join(", "));
console.log("Under 15: " + cheap.join(", "));

Operator +: jebakan klasik

Di JavaScript, + menjumlahkan angka sekaligus menggabungkan string, jadi string di mana pun mengubah penjumlahan menjadi penggabungan. PHP memisahkan keduanya: + selalu menjumlahkan dan . selalu menggabungkan.

console.log("10" + 5);  // "105"
console.log("10" - 5);  // 5
console.log("3" * "4"); // 12
console.log(0.1 + 0.2 === 0.3); // false

Kedua bahasa juga punya == yang loose dan === yang strict. Sarannya sama di keduanya: pakai === kecuali kamu memang ingin membandingkan lintas tipe.

Mengirim data dari PHP ke JavaScript

PHP berjalan lebih dulu, jadi PHP bisa menulis data langsung ke halaman untuk dipakai JavaScript di browser. json_encode mengubah array PHP menjadi JavaScript yang valid:

Tab Output menampilkan script yang dihasilkan dengan data yang sudah terisi. Flag JSON_HEX_TAG melakukan escape pada < dan >, jadi nilai yang berisi </script> tidak bisa mengakhiri script lebih awal. Penjelasan lebih lanjut tentang opsinya ada di json_encode.

Arah sebaliknya bekerja lewat HTTP: JavaScript di browser memanggil fetch("/api/cart.php"), script PHP berjalan, lalu menjawab dengan JSON:

<?php
// api/cart.php
header('Content-Type: application/json');
echo json_encode(['items' => 3, 'total' => 257]);
const res = await fetch("/api/cart.php");
const cart = await res.json();
console.log(cart.total); // 257

PHP vs Node.js di server

Saat JavaScript berjalan di server lewat Node.js, perbandingannya menjadi pilihan yang sungguhan.

PHPNode.js
Modeleksekusi baru untuk setiap request, tanpa berbagi apa punsatu proses yang berjalan lama dengan event loop
Menunggu I/Omemblokir request itu (request lain berjalan di worker lain)non-blocking, async/await
Unggul disitus yang dirender di server, CMS, aplikasi CRUD klasikaplikasi real-time, websocket, banyak koneksi yang diam
Hostingshared host mana pun, PHP-FPMprocess manager Node atau platform seperti Vercel
Framework besarLaravel, Symfony, WordPressExpress, NestJS, Next.js
Satu bahasa untuk frontend dan backendtidakya

Model PHP lebih pemaaf: bug atau kebocoran memori hanya memengaruhi satu request, dan setiap request dimulai dari keadaan bersih. Model Node bisa menyimpan state dan membiarkan koneksi tetap terbuka, yang cocok untuk chat dan dashboard live, tetapi crash atau loop yang memblokir memengaruhi setiap pengguna proses itu.

Mana yang sebaiknya dipelajari

Kamu akan butuh JavaScript untuk halaman web interaktif apa pun, karena hanya bahasa itulah yang dijalankan browser. Pertanyaannya adalah apa yang berjalan di server:

  • Pelajari PHP selanjutnya jika kamu ingin bekerja dengan WordPress, Laravel, atau banyak situs PHP yang sudah ada, atau jika kamu ingin cara paling sederhana untuk menaruh situs dinamis di hosting yang murah. Mulailah dengan apa itu PHP.
  • Tetap dengan JavaScript (Node.js) jika kamu ingin satu bahasa untuk seluruh stack atau sedang membuat fitur real-time.

Jalur yang umum adalah HTML dan CSS, lalu JavaScript di browser, lalu satu bahasa server. Bahasa server mana pun yang kamu pilih, form, session, database, dan API JSON bekerja dengan ide HTTP yang sama, jadi pengetahuanmu tetap terpakai.

Pertanyaan yang sering diajukan

Bisakah JavaScript menggantikan PHP?

Di server, bisa: Node.js (dengan Express, Next.js, atau sejenisnya) mengerjakan tugas yang sama dengan PHP. Di browser, PHP sama sekali tidak bisa menggantikan JavaScript, karena browser hanya menjalankan JavaScript. Itulah sebabnya banyak situs memakai PHP atau Node di server dan JavaScript di browser.

Bagaimana cara mengirim variabel PHP ke JavaScript?

Cetak ke halaman sebagai JSON: <script>const user = <?= json_encode($user, JSON_HEX_TAG) ?>;</script>. json_encode menghasilkan JavaScript yang valid untuk string, angka, array, dan object, dan JSON_HEX_TAG mencegah </script> di dalam data menutup tag-nya.

Bisakah JavaScript memanggil fungsi PHP?

Tidak secara langsung, karena PHP berjalan di server dan JavaScript di browser. JavaScript mengirim request HTTP dengan fetch('/api.php?id=3'), script PHP berjalan dan mencetak response (biasanya JSON), lalu JavaScript membacanya.

Apakah PHP lebih cepat daripada Node.js?

Tergantung beban kerjanya. Node.js menangani banyak koneksi lambat secara bersamaan (chat, websocket) dengan baik berkat event loop-nya. PHP 8 dengan OPcache cepat untuk halaman request dan response biasa. Untuk sebagian besar situs, yang menjadi hambatan adalah database, bukan bahasanya.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai