Thứ tư, 18/09/2019 | 00:00 GMT+7

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 :

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:

đậu phộng.js
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.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:


Tags:

Các tin liên quan