12/08/2018, 14:37

Node.JS Yargs - Build interactive command line tools

Sau loạt bài viết về Amazon SES, SNS and SQS khá là khô khan (vì khó để thực hiện việc kiểm thử) và không có tính ứng dụng rộng rãi. Mình sẽ quay lại với chủ đề có tính thực tiễn cao hơn. Hôm nay mình xin chia sẻ về một Node.JS module hỗ trợ chúng ta trong việc parse các tham số cho ứng dụng ...

Sau loạt bài viết về Amazon SES, SNS and SQS khá là khô khan (vì khó để thực hiện việc kiểm thử) và không có tính ứng dụng rộng rãi. Mình sẽ quay lại với chủ đề có tính thực tiễn cao hơn. Hôm nay mình xin chia sẻ về một Node.JS module hỗ trợ chúng ta trong việc parse các tham số cho ứng dụng console. Như mình đã từng giới thiệu một module cho Python là Argparse, hôm nay mình sẽ giới thiệu module này cho ngôn ngữ Node.JS, đó là Yargs, một Node.JS module cho việc parse các tham số trong ứng dụng console. OK, chúng ta cùng bắt đầu tìm hiểu nó nhé.

Yargs là một module giúp bạn xây dựng một ứng dụng console có tính tương tác cao và thân thiện với người sử dụng. Yargs sẽ mang lại cho bạn những gì?

  • Các câu lệnh và (nhóm) các tùy chọn (ví dụ: module run -n --force)
  • Tự động sinh ra menu trợ giúp dựa trên các tham số của ứng dụng
  • Auto complete cho các câu lệnh và tùy chọn
  • Và nhiều hơn thế...

Với những đặc tính đã kể trên, Yargs sẽ giúp bạn tập trung vào xây dựng và phát triển tính năng của ứng dụng mà không cần phải bận tâm đến cách đọc các tham số từ người dùng.

Trước khi bắt đầu với Yargs, chúng ta thử nhìn một ứng dụng đơn giản bằng Node.JS mà không có Yargs nhé. Ứng dụng đơn giản này sẽ nhận tên và tuổi của người dùng đã nhập và hiển thị lên màn hình console nhé.

// no-yargs.js
var args = process.argv;

console.log("Your name: %s
Your age: %s years old", args[2], args[3]);

Chạy thử ứng dụng và xem kết quả nhận được nhé

$ node no-yargs.js name 24
Your name: name
Your age: 24 years old

Bạn nhìn vào đoạn code trên. Tại sao chúng ta lại lấy từ index số 2 và số 3 cho name và age? Bạn hãy thử log ra biến args để hiểu lý do tại sao nhé             </div>
            
            <div class=

0