Dengan menerbitkan bagian
pertama dari terjemahan panduan
ini di Node.js, kami memutuskan untuk mengetahui pendapat audiens tentang apakah kami harus terus mengerjakan proyek dan melakukan survei kecil. Ternyata, sekitar 94% dari mereka yang memilih mendukung inisiatif kami. Jadi, penuhi bagian kedua tutorial Node.js.

Hari ini kita akan berbicara tentang apa jenis pengetahuan JS yang perlu Anda miliki untuk mengembangkan aplikasi untuk platform Node.js, membahas perbedaan antara kode JavaScript sisi-server dan server, dan berbicara tentang mesin JS dan beberapa teknik pengembangan Node.js.
[Kami menyarankan Anda untuk membaca] Bagian lain dari siklus iniBagian 1:
Informasi Umum dan MemulaiBagian 2:
JavaScript, V8, beberapa trik pengembanganBagian 3:
Hosting, REPL, bekerja dengan konsol, modulBagian 4:
npm, package.json dan file package-lock.jsonBagian 5:
npm dan npxBagian 6:
loop acara, tumpukan panggilan, timerBagian 7:
Pemrograman AsinkronBagian 8:
Panduan Node.js, Bagian 8: HTTP dan Protokol WebSocketBagian 9:
Panduan Node.js, bagian 9: bekerja dengan sistem fileBagian 10:
Panduan Node.js, Bagian 10: Modul Standar, Streaming, Database, NODE_ENVPDF lengkap dari Node.js Guide Apa jenis pengetahuan JS yang saya butuhkan untuk pengembangan Node.js?
Misalkan Anda baru saja memulai pemrograman. Seberapa dalam Anda perlu belajar JavaScript untuk berhasil menguasai Node.js? Sulit bagi pemula untuk mencapai tingkat seperti itu ketika ia memperoleh kepercayaan yang cukup dalam keterampilan profesionalnya. Selain itu, ketika mempelajari pemrograman, Anda mungkin merasa bahwa Anda tidak mengerti persis di mana JavaScript browser berakhir dan pengembangan untuk Node.js. dimulai.
Jika Anda berada di awal jalur seorang programmer JavaScript, saya akan menyarankan Anda, sebelum menulis untuk Node.js, untuk menguasai konsep bahasa berikut dengan baik:
- Konstruksi leksikal.
- Ekspresi.
- Jenis.
- Variabel
- Fungsi
- Kata kunci ini.
- Fungsi panah
- Siklus
- Lingkup.
- Array
- String template.
- Terapkan tanda titik koma.
- Bekerja dalam mode ketat.
Bahkan, daftar ini terus berjalan, tetapi jika Anda menguasai semuanya, itu berarti Anda akan meletakkan fondasi yang baik untuk pengembangan klien dan server yang produktif dalam JavaScript.
Konsep bahasa berikut ini juga sangat penting untuk memahami ide-ide pemrograman asinkron, yang merupakan salah satu bagian dasar dari Node.js. Secara khusus, kita berbicara tentang hal-hal berikut:
- Pemrograman asinkron dan fungsi panggilan balik.
- Pengatur waktu.
- Janji.
- Async / tunggu konstruk.
- Sirkuit pendek.
- Siklus acara.
Ada banyak materi JavaScript yang memungkinkan pemula untuk belajar bahasa. Sebagai contoh,
ini adalah kursus pelatihan untuk penulis panduan ini,
ini bagian MDN yang sangat berguna,
berikut adalah tutorial untuk javascript.ru. Anda dapat mempelajari mekanisme dasar JavaScript di
freecodecamp.com .
Di atas, kami berbicara tentang bagaimana pemula mungkin khawatir tentang pertanyaan di mana batas antara pengembangan server dan klien JavaScript. Mari kita bicarakan.
Perbedaan antara platform Node.js dan browser
Apa perbedaan pengembangan JS untuk Node.js dengan pemrograman browser? Kesamaan antara lingkungan ini adalah bahwa bahasa yang sama digunakan di sana dan di sana. Tetapi mengembangkan aplikasi yang dirancang untuk berjalan di browser sangat berbeda dari mengembangkan aplikasi server. Meskipun menggunakan bahasa yang sama, ada beberapa perbedaan utama yang mengubah kedua jenis pembangunan ini menjadi kegiatan yang sangat berbeda.
Perlu dicatat bahwa jika seseorang yang biasa melakukan front-end learning untuk memulai Node.js, ia memiliki peluang yang sangat serius untuk dengan cepat menguasai segala sesuatu yang diperlukan karena fakta bahwa ia akan menulis dalam bahasa yang sudah ia ketahui. Jika kebutuhan untuk belajar lingkungan baru ditambahkan dan kebutuhan untuk belajar bahasa baru, tugas itu jauh lebih rumit.
Jadi perbedaan utama antara klien dan server adalah lingkungan yang harus Anda program, dalam ekosistem lingkungan ini.
Di browser, sebagian besar pekerjaan jatuh pada berbagai operasi dengan dokumen web melalui DOM, serta penggunaan API platform web lainnya, seperti, katakanlah, mekanisme untuk bekerja dengan cookie. Node.js, tentu saja, memiliki semua ini. Tidak ada objek
document
, tidak ada objek
window
, serta objek lain yang disediakan oleh browser.
Browser, pada gilirannya, tidak memiliki mekanisme perangkat lunak yang tersedia di lingkungan Node.js dan ada dalam bentuk modul yang dapat dihubungkan ke aplikasi. Misalnya, ini adalah API untuk mengakses sistem file.
Perbedaan lain antara pengembangan klien dan server di JS adalah ketika bekerja di lingkungan Node.js, pengembang memiliki kontrol penuh atas lingkungan. Kecuali jika Anda sedang mengembangkan aplikasi open source yang dapat dijalankan di mana saja, Anda tahu persis, misalnya, versi Node.js mana proyek Anda akan bekerja. Ini sangat nyaman dibandingkan dengan lingkungan klien di mana kode Anda harus bekerja di browser pengguna. Selain itu, ini berarti bahwa Anda dapat, tanpa takut akan masalah, menggunakan fitur bahasa terbaru.
Karena JavaScript berkembang sangat cepat, browser tidak punya cukup waktu untuk mengimplementasikan semua inovasi dengan cepat. Selain itu, tidak semua pengguna bekerja di browser versi terbaru. Akibatnya, pengembang yang ingin menggunakan sesuatu yang baru dalam program mereka dipaksa untuk mempertimbangkan hal ini, menjaga kompatibilitas aplikasi mereka dengan browser yang mereka gunakan, yang dapat mengakibatkan kebutuhan untuk meninggalkan fitur JavaScript modern. Anda tentu saja dapat menggunakan Babel transporter untuk mengonversi kode ke format yang kompatibel dengan standar EcmaScript 5, yang didukung oleh semua browser, tetapi Anda tidak akan memerlukan ini ketika bekerja dengan Node.js.
Perbedaan lain antara Node.js dan browser adalah bahwa Node.js menggunakan sistem modul
CommonJS , sedangkan di browser Anda dapat melihat awal penerapan standar Modul ES. Dalam praktiknya, ini berarti bahwa saat ini di Node.js, konstruk
require()
digunakan untuk menghubungkan kode eksternal, dan
import
kode browser.
V8 dan mesin JavaScript lainnya
V8 adalah nama mesin JavaScript yang digunakan di browser Google Chrome. Dialah yang bertanggung jawab atas eksekusi kode JavaScript, yang masuk ke browser saat bekerja di Internet. V8 menyediakan runtime untuk JavaScript. DOM dan API platform web lainnya disediakan oleh browser.
Mesin JS tidak tergantung pada browser yang menjalankannya. Fakta inilah yang memungkinkan munculnya dan pengembangan platform Node.js. V8 dipilih sebagai mesin untuk Node.js pada tahun 2009. Sebagai hasil dari ledakan popularitas, Node.js V8 ternyata menjadi mesin yang sekarang bertanggung jawab untuk mengeksekusi sejumlah besar kode JS sisi-server.
Ekosistem Node.js sangat besar. Berkat ini, V8 juga digunakan, melalui proyek-proyek seperti
Electron , untuk mengembangkan aplikasi desktop.
Perlu dicatat bahwa, selain V8, ada mesin lain:
Daftar mesin JS tidak terbatas pada ini.
Mesin ini menerapkan spesifikasi ECMA-262, juga disebut ECMAScript. Ini adalah spesifikasi yang menstandarkan JavaScript. Versi standar terbaru dapat ditemukan di
sini .
Development Pengembangan mesin JSS dan aspirasi kinerja
Mesin V8 ditulis dalam C ++, terus ditingkatkan. Itu dapat berjalan di banyak sistem, terutama Mac, Windows, dan Linux. Di sini kita tidak akan berbicara tentang detail implementasi V8. Informasi tentang mereka dapat ditemukan di publikasi lain, termasuk di
situs web resmi V8 . Mereka berubah seiring waktu, kadang-kadang sangat serius.
V8 terus berkembang, hal yang sama dapat dikatakan pada mesin lain. Ini mengarah, khususnya, ke peningkatan kinerja browser web dan platform Node.js. Pembuat mesin peramban terus bersaing, berjuang untuk kecepatan eksekusi kode, ini telah berlangsung selama bertahun-tahun. Semua ini bermanfaat bagi pengguna dan pemrogram.
▍ Interpretasi dan kompilasi
JavaScript dianggap sebagai bahasa yang ditafsirkan, tetapi mesin modern jauh dari hanya menafsirkan kode JS. Mereka mengkompilasinya. Tren ini dapat diamati sejak 2009, ketika kompiler JavaScript ditambahkan di Firefox 3.5, setelah itu produsen mesin dan browser lain mengadopsi ide ini.
V8 mengkompilasi JavaScript untuk meningkatkan kinerja kode. Sejak munculnya Google Maps pada tahun 2004, JavaScript telah berevolusi, berevolusi dari bahasa di mana, untuk mengimplementasikan fitur interaktif aplikasi web, mereka biasanya menulis beberapa puluh baris, menjadi bahasa di mana aplikasi browser yang terdiri dari ribuan atau bahkan ratusan ditulis seribu baris kode. Aplikasi tersebut dapat berjalan selama berjam-jam di browser, yang sangat berbeda dari skenario penggunaan JS lama, kode yang, misalnya, hanya dapat digunakan untuk memverifikasi kebenaran data yang dimasukkan ke dalam formulir. Dalam kondisi modern, kompilasi kode sangat masuk akal, karena walaupun pelaksanaan langkah ini dapat menunda saat kode diluncurkan, setelah kompilasi kode jauh lebih produktif daripada yang akan diproses secara eksklusif oleh penerjemah dan akan berjalan lebih cepat, tetapi akan bekerja lebih lambat.
Sekarang, setelah membahas beberapa ketentuan mengenai mesin JS, interpretasi dan kompilasi kode, mari beralih ke praktik. Yaitu, mari kita bicara tentang cara mematikan aplikasi Node.js.
Keluar dari Aplikasi Node.js
Ada beberapa cara untuk mematikan aplikasi Node.js.
Jadi, saat menjalankan program di konsol, Anda dapat mengakhiri pekerjaannya menggunakan pintasan keyboard
ctrl+c
. Tetapi kami lebih tertarik pada metode perangkat lunak untuk mematikan aplikasi. Dan kita akan mulai, mungkin, dengan perintah paling kasar untuk keluar dari program, yang, seperti yang akan Anda pahami sekarang, lebih baik tidak menggunakannya.
Modul
process
kernel menyediakan metode yang mudah digunakan yang memungkinkan Anda untuk secara program keluar dari aplikasi Node.js. Ini terlihat seperti ini:
process.exit()
Ketika Node.js menemukan perintah seperti itu dalam kode, ini mengarah pada fakta bahwa prosesnya berakhir secara instan. Ini berarti bahwa segala sesuatu yang dilakukan oleh program akan menjadi agak kasar dan tanpa gangguan. Kita berbicara tentang panggilan balik yang tidak diundang, tentang permintaan jaringan yang dieksekusi pada saat rilis, tentang tindakan dengan file, tentang operasi penulisan di
stdout
atau
stderr
.
Jika situasi ini cocok untuk Anda, Anda dapat menggunakan metode ini. Ketika Anda memanggilnya, Anda bisa memberikan bilangan bulat yang akan dianggap oleh sistem operasi sebagai kode keluar untuk program.
process.exit(1)
Secara default, kode ini diatur ke 0, yang berarti berhasil diselesaikan. Kode keluar lain memiliki arti berbeda, yang mungkin berguna untuk menggunakannya di sistem Anda sendiri untuk menjalin interaksi beberapa program dengan yang lain.
Rincian tentang kode penutupan program dapat ditemukan di
sini .
Anda juga dapat menetapkan kode keluar ke properti
process.exitCode
. Ini terlihat seperti ini:
process.exitCode = 1
Setelah program berakhir, Node.js akan mengembalikan kode ini ke sistem.
Perlu dicatat bahwa pekerjaan program akan berakhir dengan sendirinya setelah melakukan semua tindakan yang ditentukan di dalamnya. Namun, dalam kasus Node.js, sering ada program yang, dalam kondisi ideal, dirancang untuk bekerja selama durasi yang tidak terbatas. Kami berbicara, misalnya, tentang server HTTP seperti ini:
const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hi!') }) app.listen(3000, () => console.log('Server ready'))
Program semacam itu, jika tidak ada yang terjadi, secara teori, dapat bekerja selamanya. Dalam hal ini, jika Anda memanggil
process.exit()
, operasi yang dilakukan olehnya pada saat memanggil perintah ini akan terputus. Dan ini buruk.
Untuk menyelesaikan pekerjaan program tersebut, Anda perlu menggunakan sinyal
SIGTERM
dan melakukan tindakan yang diperlukan menggunakan penangan yang sesuai.
Harap dicatat bahwa untuk menggunakan objek
process
, Anda tidak perlu menghubungkan apa pun dengan menggunakan, karena objek ini tersedia untuk aplikasi Node.js secara default.
Perhatikan contoh berikut:
const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hi!') }) app.listen(3000, () => console.log('Server ready')) process.on('SIGTERM', () => { app.close(() => { console.log('Process terminated') }) })
Apa itu sinyal? Sinyal adalah sarana interaksi antara proses dalam standar POSIX (Portable Operating System Interface). Itu adalah pemberitahuan yang dikirim ke proses untuk memberi tahu dia tentang peristiwa tertentu.
Misalnya, sinyal
SIGKILL
memberi tahu proses yang harus segera dimatikan. Idealnya berfungsi seperti
process.exit()
.
Sinyal
SIGTERM
memberi tahu proses yang diperlukan untuk melakukan prosedur mematikan normal. Sinyal seperti itu dikirim dari manajer proses, seperti
upstart
atau
supervisord
, dan dari banyak lainnya.
Anda dapat mengirim sinyal seperti itu dari program itu sendiri, menggunakan perintah berikut:
process.kill(process.pid, 'SIGTERM')
Untuk berhasil menyelesaikan perintah seperti itu, Anda perlu mengetahui
PID
proses yang Anda rencanakan untuk diselesaikan.
Membaca Variabel Lingkungan dari Node.js
Modul kernel
process
memiliki properti
env
, yang memberikan akses ke semua variabel lingkungan yang ditetapkan pada saat proses dimulai.
Berikut adalah contoh bekerja dengan variabel lingkungan
NODE_ENV
, yang, secara default, disetel ke
development
:
process.env.NODE_ENV
Jika, sebelum menjalankan skrip, setel ke
production
, ini akan memberi tahu Node.js bahwa program sedang berjalan di lingkungan produksi.
Demikian pula, Anda dapat bekerja dengan variabel lingkungan lainnya, misalnya, variabel yang Anda atur sendiri.
Ringkasan
Hari ini kami membahas tentang pemrograman berbasis server dan sisi server dalam JavaScript, berbicara tentang mesin JS, cara mematikan aplikasi server, dan cara membaca variabel lingkungan dari program Node.js. Lain kali kita akan berbicara tentang hosting untuk aplikasi Node.js, bagaimana menggunakan Node.js dalam mode REPL, bagaimana bekerja dengan argumen yang dapat diteruskan ke skrip ketika dipanggil, bagaimana berinteraksi dengan konsol, dan bagaimana merancang kode sebagai modul.
Pembaca yang budiman! Tutorial JavaScript apa yang akan Anda rekomendasikan untuk pemula?
