Cách sử dụng Node.js REPL
Node.js Read-Eval-Print-Loop (REPL) là một shell tương tác xử lý các biểu thức Node.js. Vỏ đọc mã JavaScript user nhập vào, eval uates kết quả của việc giải thích các dòng mã, in kết quả cho user , và các vòng cho đến khi các tín hiệu dùng để bỏ thuốc lá.REPL đi kèm với mọi cài đặt Node.js và cho phép bạn nhanh chóng kiểm tra và khám phá mã JavaScript trong môi trường Node mà không cần phải lưu trữ trong file .
Yêu cầu
Để hoàn thành hướng dẫn này, bạn cần :
- Node.js được cài đặt trên máy phát triển của bạn. Hướng dẫn này sử dụng version 10.16.0. Để cài đặt tính năng này trên macOS hoặc Ubuntu 18.04, hãy làm theo các bước trong Cách cài đặt Node.js và Tạo Môi trường Phát triển Cục bộ trên macOS hoặc phần “Cài đặt Sử dụng PPA” của Cách Cài đặt Node.js trên Ubuntu 18.04 .
- Kiến thức cơ bản về JavaScript, bạn có thể tìm thấy ở đây: Cách viết mã trong JavaScript
Bước 1 - Bắt đầu và Dừng REPL
Nếu bạn đã cài đặt node
, thì bạn cũng có Node.js REPL. Để bắt đầu nó, chỉ cần nhập node
trong shell dòng lệnh của bạn:
- node
Điều này dẫn đến dấu nhắc REPL:
- >
Biểu tượng >
cho bạn biết rằng bạn có thể nhập mã JavaScript để được đánh giá ngay lập tức.
Ví dụ: hãy thử thêm hai số trong REPL bằng lệnh sau:
- > 2 + 2
Khi bạn nhấn ENTER
, REPL sẽ đánh giá biểu thức và trả về:
- 4
Để thoát khỏi REPL, bạn có thể nhập .exit
hoặc nhấn CTRL+D
một lần hoặc nhấn CTRL+C
hai lần, thao tác này sẽ đưa bạn trở lại dấu nhắc shell .
Với việc bắt đầu và dừng lại, hãy xem cách bạn có thể sử dụng REPL để thực thi mã JavaScript đơn giản.
Bước 2 - Thực thi mã trong Node.js REPL
REPL là một cách nhanh chóng để kiểm tra mã JavaScript mà không cần phải tạo file . Hầu hết mọi JavaScript hoặc biểu thức Node.js hợp lệ đều có thể được thực thi trong REPL.
Trong bước trước, bạn đã thử phép cộng hai số, bây giờ hãy thử phép chia. Để làm như vậy, hãy bắt đầu REPL mới:
- node
Trong loại dấu nhắc :
- > 10 / 5
Nhấn ENTER
, và kết quả sẽ là 2
, như mong đợi:
- 2
REPL cũng có thể xử lý các hoạt động trên chuỗi. Nối các chuỗi sau trong REPL của bạn bằng lệnh :
- > "Hello " + "World"
, nhấn ENTER
và biểu thức chuỗi được đánh giá:
- 'Hello World'
Lưu ý : Bạn có thể nhận thấy rằng kết quả sử dụng dấu nháy đơn thay vì dấu nháy kép. Trong JavaScript, các dấu ngoặc kép được sử dụng cho một chuỗi không ảnh hưởng đến giá trị của nó. Nếu chuỗi bạn đã nhập sử dụng một dấu ngoặc kép, REPL đủ thông minh để sử dụng dấu ngoặc kép trong kết quả .
Chức năng gọi điện
Khi viết mã Node.js, người ta thường in thông báo qua phương thức global console.log
hoặc một hàm tương tự. Nhập nội dung sau vào dấu nhắc:
- > console.log("Hi")
Nhấn ENTER
sẽ xuất ra kết quả sau:
- Hi
- undefined
Kết quả đầu tiên là kết quả từ console.log
, nó sẽ in một thông báo tới stream stdout
(màn hình). Bởi vì console.log
in một chuỗi thay vì trả về một chuỗi, thông báo được nhìn thấy mà không có dấu ngoặc kép. Không undefined
là giá trị trả về của hàm.
Tạo biến
Hiếm khi bạn chỉ làm việc với các ký tự trong JavaScript. Tạo một biến trong REPL hoạt động giống như làm việc với file .js
. Nhập nội dung sau vào dấu nhắc:
- > let age = 30
Nhấn ENTER
dẫn đến:
- undefined
Giống như trước đây, với console.log
, giá trị trả về của lệnh này là undefined
. Biến age
sẽ có sẵn cho đến khi bạn thoát khỏi phiên REPL. Ví dụ, bạn có thể nhân age
với hai. Nhập nội dung sau tại dấu nhắc và nhấn ENTER
:
- > age * 2
Kết quả là:
- 60
Vì REPL trả về các giá trị, bạn không cần sử dụng console.log
hoặc các hàm tương tự để xem kết quả trên màn hình. Theo mặc định, mọi giá trị trả về sẽ xuất hiện trên màn hình.
Khối nhiều dòng
Các khối mã nhiều dòng cũng được hỗ trợ. Ví dụ: bạn có thể tạo một hàm thêm 3 vào một số nhất định. Bắt đầu chức năng bằng lệnh như sau:
- > const add3 = (num) => {
Sau đó, nhấn ENTER
sẽ thay đổi dấu nhắc thành:
- ...
REPL nhận thấy một dấu ngoặc nhọn mở và do đó giả định bạn đang viết nhiều hơn một dòng mã, cần được thụt lề. Để dễ đọc hơn, REPL thêm 3 dấu chấm và khoảng trắng trên dòng tiếp theo, do đó, đoạn mã sau có vẻ như được thụt vào.
Nhập từng dòng thứ hai và thứ ba của hàm, nhấn ENTER
sau mỗi dòng:
- ... return num + 3;
- ... }
Nhấn ENTER
sau khi đóng dấu ngoặc nhọn sẽ hiển thị giá trị undefined
, đó là “giá trị trả về” của phép gán hàm cho một biến. Dấu nhắc ...
hiện đã biến mất và dấu nhắc >
trả về:
undefined >
Bây giờ, hãy gọi add3()
trên một giá trị:
- > add3(10)
Như mong đợi, kết quả là:
- 13
Bạn có thể sử dụng REPL để thử các đoạn mã JavaScript trước khi đưa chúng vào chương trình của bạn . REPL cũng bao gồm một số phím tắt tiện dụng để làm cho quá trình đó dễ dàng hơn.
Bước 3 - Thành thạo các phím tắt REPL
REPL cung cấp các phím tắt để giảm thời gian viết mã khi có thể. Nó lưu giữ lịch sử của tất cả các lệnh đã nhập và cho phép ta duyệt qua chúng và lặp lại một lệnh nếu cần.
Ví dụ: nhập chuỗi sau:
- "The answer to life the universe and everything is 32"
Kết quả này trong:
'The answer to life the universe and everything is 32'
Nếu ta muốn chỉnh sửa chuỗi và thay đổi “32” thành “42”, tại dấu nhắc, hãy sử dụng phím mũi tên UP
để quay lại lệnh trước đó:
> "The answer to life the universe and everything is 32"
Di chuyển con trỏ sang trái, xóa 3
, nhập 4
và nhấn ENTER
lần nữa:
'The answer to life the universe and everything is 42'
Tiếp tục nhấn phím mũi tên UP
và bạn sẽ quay lại lịch sử của bạn cho đến khi lệnh được sử dụng đầu tiên trong phiên REPL hiện tại. Ngược lại, nhấn DOWN
sẽ lặp lại các lệnh gần đây hơn trong lịch sử.
Khi bạn hoàn tất thao tác qua lịch sử lệnh của bạn , hãy nhấn DOWN
liên tục cho đến khi bạn sử dụng hết lịch sử lệnh gần đây và nhìn thấy dấu nhắc .
Để nhanh chóng nhận được giá trị được đánh giá cuối cùng, hãy sử dụng ký tự gạch dưới. Tại dấu nhắc , nhập _
và nhấn ENTER
:
- > _
Chuỗi đã nhập trước đó sẽ xuất hiện trở lại:
'The answer to life the universe and everything is 42'
REPL cũng có tính năng tự động hoàn thành cho các hàm, biến và từ khóa. Nếu bạn muốn tìm căn bậc hai của một số bằng hàm Math.sqrt
, hãy nhập một vài chữ cái đầu tiên, như sau:
- > Math.sq
Sau đó nhấn TAB
và REPL sẽ tự động hoàn thành chức năng:
> Math.sqrt
Khi có nhiều khả năng tự động hoàn thành, bạn sẽ được yêu cầu với tất cả các tùy chọn có sẵn. Ví dụ: chỉ nhập:
- > Math.
Và nhấn TAB
hai lần. Bạn được chào đón với các tính năng tự động hoàn thành có thể có:
> Math. Math.__defineGetter__ Math.__defineSetter__ Math.__lookupGetter__ Math.__lookupSetter__ Math.__proto__ Math.constructor Math.hasOwnProperty Math.isPrototypeOf Math.propertyIsEnumerable Math.toLocaleString Math.toString Math.valueOf Math.E Math.LN10 Math.LN2 Math.LOG10E Math.LOG2E Math.PI Math.SQRT1_2 Math.SQRT2 Math.abs Math.acos Math.acosh Math.asin Math.asinh Math.atan Math.atan2 Math.atanh Math.cbrt Math.ceil Math.clz32 Math.cos Math.cosh Math.exp Math.expm1 Math.floor Math.fround Math.hypot Math.imul Math.log Math.log10 Math.log1p Math.log2 Math.max Math.min Math.pow Math.random Math.round Math.sign Math.sin Math.sinh Math.sqrt Math.tan Math.tanh Math.trunc
Tùy thuộc vào kích thước màn hình của shell, kết quả có thể được hiển thị với số lượng hàng và cột khác nhau. Đây là danh sách tất cả các chức năng và thuộc tính có sẵn trong module Math
.
Nhấn CTRL+C
để đến một dòng mới trong dấu nhắc mà không thực hiện những gì có trong dòng hiện tại.
Biết các phím tắt REPL giúp bạn sử dụng hiệu quả hơn. Mặc dù vậy, REPL còn có một thứ khác để tăng năng suất— Các lệnh REPL .
Bước 4 - Sử dụng lệnh REPL
REPL có các từ khóa cụ thể để giúp kiểm soát hành vi của nó. Mỗi lệnh bắt đầu bằng một dấu chấm .
.
.Cứu giúp
Để liệt kê tất cả các lệnh có sẵn, hãy sử dụng lệnh .help
:
- > .help
Không có nhiều, nhưng chúng hữu ích để hoàn thành công việc trong REPL:
.break Sometimes you get stuck, this gets you out .clear Alias for .break .editor Enter editor mode .exit Exit the repl .help Print this help message .load Load JS from a file into the REPL session .save Save all evaluated commands in this REPL session to a file Press ^C to abort current expression, ^D to exit the repl
Nếu bạn quên một lệnh, bạn luôn có thể tham khảo .help
để xem nó làm được gì.
.break / .clear
Sử dụng .break
hoặc .clear
, thật dễ dàng để thoát khỏi một biểu thức nhiều dòng. Ví dụ, bắt đầu một for loop
như sau:
- > for (let i = 0; i < 100000000; i++) {
Để thoát khỏi việc nhập bất kỳ dòng nào nữa, thay vì nhập dòng tiếp theo, hãy sử dụng lệnh .break
hoặc .clear
để thoát ra:
- ... .break
Bạn sẽ thấy một dấu nhắc mới:
>
REPL sẽ chuyển sang một dòng mới mà không cần thực thi bất kỳ mã nào, tương tự như nhấn CTRL+C
.save và .load
Lệnh .save
lưu trữ tất cả mã bạn đã chạy kể từ khi bắt đầu REPL, vào một file . Lệnh .load
chạy tất cả mã JavaScript từ một file bên trong REPL.
Thoát phiên bằng lệnh .exit
hoặc bằng phím tắt CTRL+D
Bây giờ bắt đầu một REPL mới với node
. Bây giờ chỉ mã bạn sắp viết sẽ được lưu.
Tạo một mảng với các loại trái cây:
- > fruits = ['banana', 'apple', 'mango']
Trong dòng tiếp theo, REPL sẽ hiển thị:
[ 'banana', 'apple', 'mango' ]
Lưu biến này vào một file mới, fruits.js
:
- > .save fruits.js
Ta được chào đón với xác nhận:
Session saved to: fruits.js
Tệp được lưu trong cùng một folder mà bạn đã mở Node.js REPL. Ví dụ: nếu bạn đã mở Node.js REPL trong folder chính của bạn , thì file của bạn sẽ được lưu trong folder chính của bạn.
Thoát phiên và bắt đầu REPL mới với node
. Tại dấu nhắc , tải file fruits.js
bằng lệnh :
- > .load fruits.js
Kết quả này trong:
fruits = ['banana', 'apple', 'mango'] [ 'banana', 'apple', 'mango' ]
Lệnh .load
đọc từng dòng mã và thực thi nó, như mong đợi của một trình thông dịch JavaScript. Đến đây bạn có thể sử dụng các fruits
biến như thể nó đã có sẵn trong phiên hiện tại tất cả các thời gian.
Nhập lệnh sau và nhấn ENTER
:
- > fruits[1]
REPL sẽ xuất ra:
'apple'
Bạn có thể tải các file JavaScript nào bằng lệnh .load
, không chỉ các mục bạn đã lưu. Hãy nhanh chóng chứng minh bằng cách mở trình soạn thảo mã hoặc nano
bạn muốn , một editor dòng lệnh và tạo một file mới có tên là peanuts.js
:
- nano peanuts.js
Bây giờ file đã mở, hãy nhập như sau:
console.log('I love peanuts!');
Lưu và thoát nano bằng cách nhấn CTRL+X
Trong cùng một folder mà bạn đã lưu peanuts.js
, bắt đầu Node.js REPL với node
. Tải peanuts.js
trong phiên của bạn:
- > .load peanuts.js
Lệnh .load
sẽ thực hiện câu lệnh console
đơn và hiển thị kết quả sau:
console.log('I love peanuts!'); I love peanuts! undefined >
Khi việc sử dụng REPL của bạn kéo dài hơn dự kiến hoặc bạn tin rằng bạn có một đoạn mã thú vị đáng để chia sẻ hoặc khám phá sâu hơn, bạn có thể sử dụng các .save
và .load
để thực hiện cả hai mục tiêu đó.
Kết luận
REPL là một môi trường tương tác cho phép bạn thực thi mã JavaScript mà trước tiên không cần phải ghi nó vào file .
Bạn có thể sử dụng REPL để thử mã JavaScript từ các hướng dẫn khác:
- Cách xác định các hàm trong JavaScript
- Cách sử dụng câu lệnh Switch trong JavaScript
- Cách sử dụng các phương thức đối tượng trong JavaScript
- Cách lập index , tách và thao tác chuỗi trong JavaScript
Các tin liên quan