Dalam tutorial ini Anda akan membuat program pertama Anda dengan runtime Node.js. Anda akan diperkenalkan dengan beberapa konsep khusus Node dan membangun jalan Anda untuk membuat program yang membantu pengguna memeriksa variabel environment di sistem mereka. Untuk melakukannya, Anda akan mempelajari cara mengeluarkan string ke konsol, menerima input dari pengguna, dan mengakses variabel environment.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan:
Node.js diinstal pada mesin pengembangan Anda. Tutorial ini menggunakan Node.js versi 10.16.0. Untuk menginstal ini di macOS atau Ubuntu 18.04, ikuti langkah-langkah di Cara Menginstal Node.js dan Membuat Environment Pengembangan Lokal di macOS atau bagian “Menginstal Menggunakan PPA” dari Cara Menginstal Node.js di Ubuntu 18.04 .
Pengetahuan dasar tentang JavaScript, yang dapat Anda temukan di sini: Cara Membuat Kode dalam JavaScript .
Langkah 1 — Mengeluarkan ke Konsol
Untuk menulis "Halo, Dunia!" program, buka editor teks baris perintah seperti nano
dan buat file baru:
nano hello.js
halo.js
console.log("Hello World");
console
: objek dalam Node.js menyediakan metode sederhana untuk menulis untuk stdout
, stderr
, atau ke sungai Node.js lainnya, yang dalam banyak kasus adalah baris perintah. The log
Metode mencetak ke stdout
sungai, sehingga Anda dapat melihatnya di konsol Anda.Dalam konteks Node.js, stream adalah objek yang dapat menerima data, seperti stdout
stream, atau objek yang dapat mengeluarkan data, seperti soket jaringan atau file. Dalam kasus stdout
dan stderr
aliran, data apa pun yang dikirim ke mereka kemudian akan ditampilkan di konsol. Salah satu hal hebat tentang stream adalah mudah dialihkan, dalam hal ini Anda dapat mengarahkan output program Anda ke file, misalnya.
Simpan dan keluar nano
dengan menekan CTRL+X
, ketika diminta untuk menyimpan file, tekan Y
. Sekarang program Anda siap dijalankan.
Langkah 2 — Menjalankan Program
Untuk menjalankan program ini, gunakan node
perintah sebagai berikut:
node hello.js
hello.js
: Program akan mengeksekusi dan menampilkan output berikut:
Output
Hello World
Interpreter Node.js membaca file dan dieksekusi console.log("Hello World");
dengan memanggil log
metode console
objek global . The String "Hello World"
disahkan sebagai argumen ke log
fungsi.
Meskipun tanda kutip diperlukan dalam kode untuk menunjukkan bahwa teks adalah string, mereka tidak dicetak ke layar.
Setelah memastikan bahwa program berfungsi, mari kita buat lebih interaktif.
Langkah 3 — Menerima Input Pengguna melalui Argumen Baris Perintah
Setiap kali Anda menjalankan Node.js "Halo, Dunia!" program, itu menghasilkan output yang sama. Untuk membuat program lebih dinamis, mari kita mendapatkan masukan dari pengguna dan menampilkannya di layar.
Alat baris perintah sering menerima berbagai argumen yang mengubah perilakunya. Misalnya, menjalankan node
dengan --version
argumen mencetak versi yang diinstal alih-alih menjalankan penerjemah. Pada langkah ini, Anda akan membuat kode Anda menerima input pengguna melalui argumen baris perintah.
Buat file baru arguments.js
dengan nano:
nano arguments.js
Masukkan kode berikut:
argumen.js
console.log(process.argv);
process :
objek adalah global yang objek Node.js yang berisi fungsi dan data semua yang berhubungan dengan proses Node.js sedang berjalan. The argv
properti adalah array yang string yang berisi semua argumen baris perintah yang diberikan kepada program.
Simpan dan keluar nano
dengan mengetik CTRL+X
, ketika diminta untuk menyimpan file, tekan Y
.
Sekarang ketika Anda menjalankan program ini, Anda memberikan argumen baris perintah seperti ini:
node arguments.js hello world
Outputnya terlihat seperti berikut:
Output
[ '/usr/bin/node', '/home/sammy/first-program/arguments.js', 'hello', 'world' ]
Argumen pertama dalam process.argv
array selalu merupakan lokasi biner Node.js yang menjalankan program. Argumen kedua selalu merupakan lokasi file yang sedang dijalankan. Argumen yang tersisa adalah apa yang dimasukkan pengguna, dalam hal ini: hello
dan world
.
Kami sebagian besar tertarik pada argumen yang dimasukkan pengguna, bukan argumen default yang disediakan Node.js. Buka arguments.js
file untuk diedit:
nano arguments.js
Ubah console.log(process.arg);
menjadi berikut:
console.log(process.argv.slice(2));
Karena argv
merupakan array, Anda dapat menggunakan slice
metode bawaan JavaScript yang mengembalikan pilihan elemen. Saat Anda menyediakan slice
fungsi dengan 2
argumennya, Anda mendapatkan semua elemen argv
yang muncul setelah elemen keduanya; yaitu, argumen yang dimasukkan pengguna.
Jalankan kembali program dengan node
perintah dan argumen yang sama seperti terakhir kali:
node arguments.js hello world
Sekarang, outputnya terlihat seperti ini:
Output
[ 'hello', 'world' ]
Sekarang Anda dapat mengumpulkan input dari pengguna, mari kumpulkan input dari environment program.
Langkah 4 — Mengakses Variabel Environment
Variabel environment adalah data nilai kunci yang disimpan di luar program dan disediakan oleh OS. Mereka biasanya diatur oleh sistem atau pengguna dan tersedia untuk semua proses yang berjalan untuk tujuan konfigurasi atau status. Anda dapat menggunakan objek Node process
untuk mengaksesnya.
Gunakan nano
untuk membuat file baru environment.js
:
nano environment.js
Tambahkan kode berikut:
environment.js
console.log(process.env);
The env
objek toko semua variabel environment yang tersedia saat Node.js menjalankan program.
Simpan dan keluar seperti sebelumnya, dan jalankan environment.js
file dengan node
perintah.
node environment.js
Setelah menjalankan program, Anda akan melihat output yang mirip dengan berikut:
Output
{ SHELL: '/bin/bash', SESSION_MANAGER: 'local/digitalocean:@/tmp/.ICE-unix/1003,unix/digitalocean:/tmp/.ICE-unix/1003', COLORTERM: 'truecolor', SSH_AUTH_SOCK: '/run/user/1000/keyring/ssh', XMODIFIERS: '@im=ibus', DESKTOP_SESSION: 'ubuntu', SSH_AGENT_PID: '1150', PWD: '/home/sammy/first-program', LOGNAME: 'sammy', GPG_AGENT_INFO: '/run/user/1000/gnupg/S.gpg-agent:0:1', GJS_DEBUG_TOPICS: 'JS ERROR;JS LOG', WINDOWPATH: '2', HOME: '/home/sammy', USERNAME: 'sammy', IM_CONFIG_PHASE: '2', LANG: 'en_US.UTF-8', VTE_VERSION: '5601', CLUTTER_IM_MODULE: 'xim', GJS_DEBUG_OUTPUT: 'stderr', LESSCLOSE: '/usr/bin/lesspipe %s %s', TERM: 'xterm-256color', LESSOPEN: '| /usr/bin/lesspipe %s', USER: 'sammy', DISPLAY: ':0', SHLVL: '1', PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', DBUS_SESSION_BUS_ADDRESS: 'unix:path=/run/user/1000/bus', _: '/usr/bin/node', OLDPWD: '/home/sammy' }
Ingatlah bahwa banyak variabel environment yang Anda lihat bergantung pada konfigurasi dan pengaturan sistem Anda, dan output Anda mungkin terlihat sangat berbeda dari apa yang Anda lihat di sini. Daripada melihat daftar panjang variabel environment, Anda mungkin ingin mengambil yang spesifik.
Langkah 5 — Mengakses Variabel Environment Tertentu
Pada langkah ini Anda akan melihat variabel environment dan nilainya menggunakan process.env
objek global dan mencetak nilainya ke konsol.
The process.env
objek adalah pemetaan sederhana antara nama-nama variabel environment dan nilai-nilai mereka disimpan sebagai string. Seperti semua objek dalam JavaScript , Anda mengakses properti individual dengan mereferensikan namanya dalam tanda kurung siku.
Buka environment.js
file untuk diedit:
nano environment.js
Ubah console.log(process.env);
ke:
environment.js
console.log(process.env["HOME"]);
environment.js
programnya:node environment.js
Outputnya sekarang terlihat seperti ini:
Output
/home/sammy
Alih-alih mencetak seluruh objek, Anda sekarang hanya mencetak HOME
properti dari process.env
, yang menyimpan nilai $HOME
variabel environment.
Sekali lagi, perlu diingat bahwa keluaran dari kode ini kemungkinan akan berbeda dari yang Anda lihat di sini karena khusus untuk sistem Anda. Sekarang Anda dapat menentukan variabel environment yang akan diambil, Anda dapat meningkatkan program Anda dengan menanyakan variabel yang ingin mereka lihat kepada pengguna.
Langkah 6 — Mengambil Argumen sebagai Respons terhadap Masukan Pengguna
Selanjutnya, Anda akan menggunakan kemampuan untuk membaca argumen baris perintah dan variabel environment untuk membuat utilitas baris perintah yang mencetak nilai variabel environment ke layar.
Gunakan nano
untuk membuat file baru echo.js
:
nano echo.js
Tambahkan kode berikut:
echo.js
const args = process.argv.slice(2);
console.log(process.env[args[0]]);
Baris pertama echo.js
menyimpan semua argumen baris perintah yang diberikan pengguna ke dalam variabel konstan yang disebut args
. Baris kedua mencetak variabel environment yang disimpan dalam elemen pertama dari args
; yaitu, argumen baris perintah pertama yang diberikan pengguna.
Simpan dan keluar nano
, lalu jalankan program sebagai berikut:
node echo.js HOME
Sekarang, outputnya akan menjadi:
Output
/home/sammy
Argumen HOME
disimpan ke args
array, yang kemudian digunakan untuk menemukan nilainya di environment melalui process.env
objek.
Pada titik ini Anda sekarang dapat mengakses nilai variabel environment apa pun di sistem Anda. Untuk memverifikasi ini, coba lihat variabel berikut: PWD
, USER
, PATH
.
Mengambil variabel tunggal itu baik, tetapi membiarkan pengguna menentukan berapa banyak variabel yang mereka inginkan akan lebih baik.
Langkah 7 — Melihat Beberapa Variabel Environment
Saat ini, aplikasi hanya dapat memeriksa satu variabel environment dalam satu waktu. Akan berguna jika kita dapat menerima beberapa argumen baris perintah dan mendapatkan nilai yang sesuai di environment. Gunakan nano
untuk mengedit echo.js
:
nano echo.js
Edit file sehingga memiliki kode berikut sebagai gantinya:
echo.js
const args = process.argv.slice(2);
args.forEach(arg => {
console.log(process.env[arg]);
});
The forEach
Metode adalah metode JavaScript standar pada semua objek array yang. Ia menerima fungsi panggilan balik yang digunakan saat ia mengulangi setiap elemen array. Anda menggunakan forEach
pada args
array, menyediakan sebuah fungsi callback yang mencetak nilai argumen saat ini di environment.
Simpan dan keluar dari file. Sekarang jalankan kembali program dengan dua argumen:
node echo.js HOME PWD
Anda akan melihat output berikut:
Output
/home/sammy /home/sammy/first-program
The forEach
Fungsi memastikan bahwa setiap perintah baris argumen dalam args
array dicetak.
Sekarang Anda memiliki cara untuk mengambil variabel yang diminta pengguna, tetapi kami masih perlu menangani kasus di mana pengguna memasukkan data yang buruk.
Langkah 8 — Menangani Masukan Tidak Terdefinisi
Untuk melihat apa yang terjadi jika Anda memberikan argumen kepada program yang bukan merupakan variabel environment yang valid, jalankan perintah berikut:
node echo.js HOME PWD NOT_DEFINED
Outputnya akan terlihat seperti berikut:
Output
/home/sammy /home/sammy/first-program undefined
Dua baris pertama dicetak seperti yang diharapkan, dan baris terakhir hanya memiliki undefined
. Dalam JavaScript, undefined
nilai berarti variabel atau properti belum diberi nilai. Karena NOT_DEFINED
bukan variabel environment yang valid, ini ditampilkan sebagai undefined
.
Akan lebih membantu pengguna untuk melihat pesan kesalahan jika argumen baris perintah mereka tidak ditemukan di environment.
Buka echo.js
untuk diedit:
nano echo.js
Edit echo.js
sehingga memiliki kode berikut:
echo.js
const args = process.argv.slice(2);
args.forEach(arg => {
let envVar = process.env[arg];
if (envVar === undefined) {
console.error(`Could not find "${arg}" in environment`);
} else {
console.log(envVar);
}
});
Di sini, Anda telah memodifikasi fungsi panggilan balik yang disediakan forEach
untuk melakukan hal-hal berikut:
envVar
.envVar
adalah undefined
.envVar
adalah undefined
, maka kami mencetak pesan bermanfaat yang menunjukkan bahwa itu tidak dapat ditemukan.Catatan : console.error
Fungsi ini mencetak pesan ke layar melalui stderr
aliran, sedangkan console.log
mencetak ke layar melalui stdout
aliran. Saat Anda menjalankan program ini melalui baris perintah, Anda tidak akan melihat perbedaan antara aliran stdout
dan stderr
, tetapi praktik yang baik adalah mencetak kesalahan melalui stderr
aliran sehingga lebih mudah diidentifikasi dan diproses oleh program lain, yang dapat memberi tahu perbedaan.
Sekarang jalankan perintah berikut sekali lagi:
node echo.js HOME PWD NOT_DEFINED
Kali ini outputnya adalah:
Output
/home/sammy /home/sammy/first-program Could not find "NOT_DEFINED" in environment
Sekarang ketika Anda memberikan argumen baris perintah yang bukan merupakan variabel environment, Anda mendapatkan pesan kesalahan yang jelas yang menyatakan demikian.
Sangat tertarik dengan dunia Pemrograman Web & Mobile, saat ini fokus pada bagian Backend Web Developer, menggunakan PHP sebagai bahasa pemrograman utama, biasanya saya menggunakan Laravel.