Nút. js cho phép bạn chạy mã JavaScript bên ngoài cửa sổ trình duyệt, cung cấp các công cụ mạnh mẽ để tương tác với hệ thống tệp máy tính, chạy máy chủ web và tạo ứng dụng đầu cuối. Nút xử lý các tác vụ này bằng cách chạy không đồng bộ, điều đó có nghĩa là việc đọc đầu vào của người dùng từ thiết bị đầu cuối không đơn giản như gọi hàm getInput[]
. Trong bài viết này, chúng tôi sẽ chỉ cho bạn một cách dễ dàng để giải quyết vấn đề đó [và một số mẹo và thủ thuật để xử lý đầu vào của người dùng] bằng cách sử dụng mô-đun Node hữu ích
Làm việc với đầu vào
Nút. js cung cấp một số cách để xử lý các tương tác, bao gồm đối tượng process
tích hợp sẵn và mô-đun readline
. Mặc dù đây là những công cụ mạnh mẽ, nhưng chúng dựa vào các chức năng gọi lại và có thể gây nhầm lẫn khi làm việc lúc đầu
const readline = require['readline'].createInterface[{
readline.question['Who are you?', name => {
console.log[`Hey there ${name}!`];
Chạy mã này trong Node, bạn sẽ thấy
Sau đó, bạn có thể nhập thông tin đầu vào của mình dựa trên lời nhắc và xem phản hồi
Điều này hoạt động như dự định, nhưng nó có rất nhiều bản soạn sẵn và bạn cần gọi
readline.question[]
và tạo hàm gọi lại mỗi khi bạn muốn sử dụng nó cho đầu vào. Có một cách đơn giản hơn, cho dù bạn mới bắt đầu phát triển JavaScript hay chỉ muốn chạy một tập lệnh tương tác càng nhanh càng tốtSử dụng
0const prompt = require['prompt-sync'][];
Mô-đun nút
0 cung cấp một giải pháp thay thế dễ sử dụng cho cú pháp dựa trên gọi lại nàyconst prompt = require['prompt-sync'][];
- Đảm bảo bạn đã cài đặt Node và NPM
- Chạy
2 trong thiết bị đầu cuốiconst prompt = require['prompt-sync'][];
const prompt = require['prompt-sync'][];
Lưu ý thêm
3 sauconst prompt = require['prompt-sync'][];
4. Mô-đunconst prompt = require['prompt-sync'][];
0 là một chức năng tạo các chức năng nhắc nhở, vì vậy bạn cần gọiconst prompt = require['prompt-sync'][];
0 để có được chức năng nhắc nhở thực sự của mìnhconst prompt = require['prompt-sync'][];
Khi bạn đã tải mô-đun
0 và gọi nó, việc sử dụng nó để truy xuất dữ liệu nhập của người dùng tương đối đơn giảnconst prompt = require['prompt-sync'][];
const prompt = require['prompt-sync'][];
const name = prompt['What is your name?'];
console.log[`Hey there ${name}`];
Hàm
8 trả về phản hồi của người dùng, vì vậy, chỉ cần lưu trữ giá trị trả về đó vào một biến để sử dụng sau này. Trong ví dụ trên, biếnconst prompt = require['prompt-sync'][];
9 lưu trữ giá trị và sau đó nó được lặp lại cho người dùng ở dòng tiếp theoconst prompt = require['prompt-sync'][];
Cho phép người dùng thoát
Theo mặc định, hầu hết các chương trình đầu cuối sẽ thoát bằng Ctrl + C [Thao tác này sẽ gửi thông báo , hoặc “tín hiệu ngắt” cho biết người dùng muốn thoát khỏi chương trình]. Với
0, để đảm bảo rằng người dùng của bạn có thể thoát ra theo ý muốn, hãy thêm một đối tượng cấu hình vớiconst prompt = require['prompt-sync'][];
2 khi gọi hàmconst prompt = require['prompt-sync'][];
const name = prompt['What is your name?'];
console.log[`Hey there ${name}`];
0const prompt = require['prompt-sync'][];
const prompt = require['prompt-sync'][{sigint: true}];
Làm việc với các con số
Tất cả đầu vào của người dùng sẽ được đọc dưới dạng Chuỗi, vì vậy để coi đầu vào của người dùng là số, bạn sẽ cần chuyển đổi đầu vào
Để yêu cầu người dùng nhập dữ liệu từ trình duyệt, bạn cần sử dụng phương pháp
1 do trình duyệt cung cấpconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Phương thức
1 cho phép bạn chấp nhận đầu vào của người dùng dưới dạng chuỗi và lưu trữ nó trên một biến như sauconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
const input = prompt[];
Phương pháp này cũng chấp nhận một
3 làm thông tin bổ sung để cho người dùng biết loại đầu vào mà ứng dụng của bạn đang mong đợiconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Ví dụ: viết đoạn mã sau để hỏi tên người dùng
const input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Hoặc viết gợi ý sau khi cần biết tuổi của người dùng
const input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
1 sẽ được trình duyệt hiển thị như sauconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Ví dụ nhắc trình duyệt
Khi đó phương thức
5 sẽ hiển thị kết quả như sauconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Thông báo hiển thị kết quả
Bạn có thể định dạng văn bản
3 dưới dạng câu hỏi hoặc gợi ý tùy theo yêu cầu của bạnconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Nhận đầu vào của người dùng từ bảng điều khiển NodeJS
Để chấp nhận đầu vào của người dùng từ bảng điều khiển NodeJS, bạn cần sử dụng mô-đun
7 được cung cấpconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
Bạn có thể
8 mô-đun như sauconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
const readline = require["readline"];
Sau đó, bạn cần tạo một phiên bản
9 được kết nối với luồng đầu vào. Bạn tạoconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
9 bằng cách sử dụng phương thứcconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
1, đồng thời chuyển các tùy chọnconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
2 vàconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
3 làm đối số đối tượngconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
Vì bạn muốn đầu vào và đầu ra được ghi vào bảng điều khiển, bạn cần viết
2 làconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
5 vàconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
3 làconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
7const input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
Đây là một ví dụ về việc tạo giao diện đường đọc
const readline = require["readline"]; const rl = readline.createInterface[{ input: process.stdin, output: process.stdout, }];
Để yêu cầu đầu vào của người dùng, bạn cần gọi phương thức
8 từ đối tượngconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
9, được gán cho biếnconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
0 trong đoạn mã trênconst readline = require["readline"];
Phương thức
8 nhận hai tham sốconst input = prompt["Please enter your age:"]; alert[`You are ${input} years old`];
- Câu hỏi
3 bạn muốn hỏi người dùng của mìnhconst input = prompt["What's your name?"]; alert[`Your name is ${input}`];
- Đối tượng
3 [tùy chọn] nơi bạn có thể truyền tín hiệuconst readline = require["readline"];
4const readline = require["readline"];
- Hàm
5 để thực thi khi nhận được câu trả lời, chuyểnconst readline = require["readline"];
6 cho hàmconst readline = require["readline"];
Bạn có thể bỏ qua đối tượng
const readline = require["readline"];
3 và chuyển hàm const readline = require["readline"];
5 làm tham số thứ haiĐây là cách bạn sử dụng phương pháp
const input = prompt["Please enter your age:"];
alert[`You are ${input} years old`];
8const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
rl.question["What is your name? ", function [answer] {
console.log[`Oh, so your name is ${answer}`];
}];
Cuối cùng, bạn có thể đóng giao diện
const readline = require["readline"];
0 bằng cách gọi phương thức const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
1 bên trong hàm gọi lạiconst readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
rl.question["What is your name? ", function [answer] {
console.log[`Oh, so your name is ${answer}`];
console.log["Closing the interface"];
rl.close[];
}];
Lưu tệp dưới dạng
const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
2, sau đó gọi tập lệnh bằng NodeJS như thế này$ node ask.js
What is your name? Nathan
Oh, so your name is Nathan
Closing the interface
$
Và đó là cách bạn có thể yêu cầu đầu vào của người dùng bằng mô-đun NodeJS
const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
7Bạn cũng có thể sử dụng
const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
4 từ NodeJS để thêm bộ đếm thời gian cho câu hỏi của mình và hủy bỏ nó khi một khoảng thời gian nhất định đã trôi quaNhưng xin lưu ý rằng phương thức
const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
4 chỉ khả dụng cho NodeJS phiên bản 15 trở lên. Và thậm chí sau đó, phương pháp này vẫn còn thử nghiệmCâu hỏi sau sẽ bị hủy bỏ khi không có câu trả lời nào được đưa ra trong 10 giây sau lời nhắc. Mã này đã được thử nghiệm để hoạt động trên NodeJS phiên bản 16. 3. 0 trở lên
const readline = require["readline"];
const ac = new AbortController[];
const signal = ac.signal;
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
rl.question["What is your name? ", { signal }, [answer] => {
console.log[`Oh, so your name is ${answer}`];
console.log["Closing the console"];
process.exit[];
}];
signal.addEventListener[
"abort",
[] => {
console.log["The name question timed out!"];
},
{ once: true }
];
setTimeout[[] => {
ac.abort[];
process.exit[];
}, 10000]; // 10 seconds
Bạn có thể thêm bộ đếm thời gian như trong đoạn mã trên cho các câu hỏi nhạy cảm về thời gian
Như bạn có thể thấy từ ví dụ trên, mô-đun
const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
7 khá phức tạp so với phương thức const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
1 dễ dàng từ trình duyệtNgoài ra, bạn có thể sử dụng mô-đun npm
const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
8 để yêu cầu đầu vào của người dùng mà không cần sử dụng mô-đun const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
7Nhận đầu vào của người dùng từ NodeJS bằng mô-đun đồng bộ hóa nhắc nhở
Đầu tiên bạn cần cài đặt module
const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
8 sử dụng npm hoặc Yarn như saunpm install prompt-sync
# or
yarn add prompt-sync
Sau đó, bạn chỉ cần
const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
8 mô-đun const readline = require["readline"];
const rl = readline.createInterface[{
input: process.stdin,
output: process.stdout,
}];
8 và sử dụng phương thức const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
1 như trong trình duyệtHãy nhìn vào đoạn mã dưới đây
const input = prompt["What's your name?"];
alert[`Your name is ${input}`];
0Vì phương thức này là đồng bộ, phiên bản Node của bạn sẽ đợi đầu vào trước khi thực hiện dòng tiếp theo. Để biết thêm thông tin, bạn có thể truy cập vào