Cách sử dụng REPL của Node.js
17/06/2024 01:21
REPL là viết tắt của Đọc giá Vòng lặp In và đó là môi trường ngôn ngữ lập trình (về cơ bản là cửa sổ bảng điều khiển) lấy biểu thức đơn làm đầu vào của người dùng và trả kết quả trở lại bảng điều khiển sau khi thực thi.
Lệnh này node
là lệnh chúng tôi sử dụng để chạy các tập lệnh Node.js của mình:
node script.js
Nếu chúng tôi chạy node
lệnh mà không có bất kỳ tập lệnh nào để thực thi hoặc không có bất kỳ đối số nào, chúng tôi sẽ bắt đầu phiên REPL:
node
Lưu ý:
REPL
là viết tắt của Đọc giá Vòng lặp In và đó là môi trường ngôn ngữ lập trình (về cơ bản là cửa sổ bảng điều khiển) lấy biểu thức đơn làm đầu vào của người dùng và trả kết quả trở lại bảng điều khiển sau khi thực thi. Phiên REPL cung cấp một cách thuận tiện để kiểm tra nhanh mã JavaScript đơn giản.
Nếu bạn thử nó ngay bây giờ trong thiết bị đầu cuối của mình, đây là điều sẽ xảy ra:
❯ node>
Lệnh vẫn ở chế độ không tải và đợi chúng ta nhập nội dung nào đó.
Mẹo: nếu bạn không chắc chắn về cách mở thiết bị đầu cuối của mình, hãy google "Cách mở thiết bị đầu cuối trên hệ điều hành của bạn".
Chính xác hơn là REPL đang chờ chúng ta nhập một số mã JavaScript.
Bắt đầu đơn giản và nhập
> console.log('test')testundefined>
Giá trị đầu tiên, test
, là đầu ra mà chúng ta yêu cầu bảng điều khiển in, sau đó chúng ta nhận được undefined
giá trị trả về của việc chạy console.log()
. Node đọc dòng mã này, giá nó, in kết quả và sau đó quay lại chờ thêm dòng mã. Nút sẽ lặp qua ba bước này cho mỗi đoạn mã chúng tôi thực thi trong REPL cho đến khi thoát khỏi phiên. Đó là nơi REPL có tên của nó.
Nút tự động in kết quả của bất kỳ dòng mã JavaScript nào mà không cần hướng dẫn nó làm như vậy. Ví dụ: nhập dòng sau và nhấn enter:
> 5 === '5'false>
Lưu ý sự khác biệt trong kết quả đầu ra của hai dòng trên. Nút REPL được in undefined
sau khi thực thi console.log()
, mặt khác, nó chỉ in kết quả của 5 === '5'
. Bạn cần lưu ý rằng cái trước chỉ là một câu lệnh trong JavaScript và cái sau là một biểu thức.
Trong một số trường hợp, mã bạn muốn kiểm tra có thể cần nhiều dòng. Ví dụ: giả sử bạn muốn xác định hàm tạo số ngẫu nhiên, trong phiên REPL, hãy nhập dòng sau và nhấn enter:
function generateRandom() {...
Node REPL đủ thông minh để xác định rằng bạn chưa viết xong mã của mình và nó sẽ chuyển sang chế độ nhiều dòng để bạn nhập thêm mã. Bây giờ hãy hoàn thành định nghĩa hàm của bạn và nhấn enter:
function generateRandom() {...return Math.random()}undefined
Biến _
đặc biệt
Nếu sau một số mã bạn gõ _
, nó sẽ in kết quả của thao tác cuối cùng.
Phím mũi tên lên
Nếu bạn nhấn phím up
mũi tên, bạn sẽ có quyền truy cập vào lịch sử của các dòng mã trước đó được thực thi trong các phiên REPL hiện tại và thậm chí cả trước đó.
Lệnh chấm
REPL có một số lệnh đặc biệt, tất cả đều bắt đầu bằng dấu chấm .
. họ đang
.help
: hiển thị trợ giúp về lệnh dấu chấm.editor
: bật chế độ soạn thảo, viết mã JavaScript nhiều dòng một cách dễ dàng. Khi bạn ở chế độ này, hãy nhập ctrl-D để chạy mã bạn đã viết..break
: khi nhập một biểu thức nhiều dòng, việc nhập lệnh .break sẽ hủy bỏ việc nhập thêm. Tương tự như nhấn ctrl-C..clear
: đặt lại bối cảnh REPL thành một đối tượng trống và xóa mọi biểu thức nhiều dòng hiện đang được nhập..load
: tải một tệp JavaScript, liên quan đến thư mục làm việc hiện tại.save
: lưu tất cả những gì bạn đã nhập trong phiên REPL vào một tệp (chỉ định tên tệp).exit
: thoát khỏi thay thế (giống như nhấn ctrl-C hai lần)
REPL biết khi nào bạn đang gõ một câu lệnh nhiều dòng mà không cần gọi .editor
.
Ví dụ: nếu bạn bắt đầu nhập một phép lặp như thế này:
[1, 2, 3].forEach(num => {
và bạn nhấn enter
, REPL sẽ chuyển sang một dòng mới bắt đầu bằng 3 dấu chấm, cho biết bây giờ bạn có thể tiếp tục làm việc trên khối đó.
... console.log(num)... })
Nếu bạn gõ .break
ở cuối dòng, chế độ nhiều dòng sẽ dừng và câu lệnh sẽ không được thực thi.
Chạy REPL từ tệp JavaScript
Chúng tôi có thể nhập REPL vào tệp JavaScript bằng cách sử dụng repl
.
const repl = require('node:repl');
Sử dụng biến thay thế, chúng ta có thể thực hiện nhiều thao tác khác nhau. Để bắt đầu dấu nhắc lệnh REPL, hãy nhập dòng sau
repl.start();
Chạy tập tin trong dòng lệnh.
node repl.js
Bạn có thể truyền một chuỗi hiển thị khi REPL bắt đầu. Mặc định là '>' (có dấu cách ở cuối), nhưng chúng ta có thể xác định lời nhắc tùy chỉnh.
// a Unix style promptconst local = repl.start('$ ');
Bạn có thể hiển thị thông báo khi thoát REPL
local.on('exit', () => { console.log('exiting repl'); process.exit();});
Bạn có thể đọc thêm về mô-đun REPL trong tài liệu thay thế .