CĂN BẢN
SERVER
MYSQL
MONGODB
MODULE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Module Yargs Options trong NodeJS

Ở bài trước chúng ta đã tìm hiểu module Yargs trong NodeJS rồi nhưng đó chỉ là cách sử dụng căn bản, vì vậy trong bài này mình sẽ tiếp tục giới thiệu với các bạn một số tính năng nữa đó là Yargs Options, đây là phần cấu hình cho các tham số truyền vào của NodeJS.

Có nhiều cách cấu hình cho Yargs, tuy nhiên trong bài này mình sẽ hướng dẫn cách cấu hình bằng cách sử dụng hàm command, đây là hàm có ba tham số truyền vào và dùng để cấu hình cho một URL request.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Hàm Command trong Yargs

Hàm Command trong Yargs dùng để thiết lập các cấu hình dành cho một action nào đó, nó sẽ cấu hình các tham số truyền vào có bắt buộc hay không? Kiểu dữ liệu của các tham số đó là như thế nào? ... Hàm này có thể sử dụng nhiều lần để thiết lập cho nhiều hành động.

Cú pháp thường dùng của hàm Command như sau:

require('yargs').command('action', 'description', function(yargs){
    // Do something
});

Trong đó tham số thứ ba là một function và function này có một tham số truyền vào và đó cũng chính là đối tượng đại diện Yargs, vì vậy bạn sẽ dựa vào đối tượng này để cấu hình các options.

Ví dụ: Viết chức năng cấu hình cho action tên là get truyền vào tham số usernameemail.

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).argv;

Trong đó mình có truyền vào hàm options một object gồm hai key là usernameemail, mỗi key là một object chứa nhiều options bao gồm trong hình dưới đây.

options nodejs 01 png

Mình chụp hình lại thôi vì cũng lười dịch.

Nhìn vào trong bảng bạn sẽ thấy giá trị của demand chính là thiết lập bắt buộc truyền tham số. Bây giờ bạn chạy với lệnh sau:

node yargs-demo.js get

Ngay lập tức bạn sẽ nhận kết quả cảnh báo phải truyền cả hai tham số username và email như hình minh họa dưới đây.

options nodejs 02 png

Nếu bạn chạy lại bằng lệnh sau:

node yargs-demo.js --username TheHalfHeart --email TheHalfHeart@gmail.com

Thì kết quả sẽ không xuất hiện cảnh báo nào.

2. Một số options hay sử dụng trong Yargs

Với bảng danh sách các options trên thì chúng ta chỉ thường sử dụng những options dưới đây.

Xác định kiểu dữ liệu

Key type dùng để xác định kiểu dữ liệu cho tham số, nó có 4 giá trị gồm (array, boolean, string, number). Theo mặc định nếu bạn không xác định kiểu dữ liệu và không truyền dữ liệu vào thì nó sẽ lấy kiểu boolean.

Ví dụ: Không chỉ rõ kiểu dữ liệu.

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).argv;

// In ra xem thử
console.log(get_argv);

Bạn chạy với lệnh sau:

node yargs-demo.js --username --email

Kết quả sẽ như hình dưới đây.

options nodejs 03 png

Như trong hình bạn thấy dữ liệu của hai keys username email true (tức boolean). Như vậy nếu ta không xác định kiểu dữ liệu cho các tham số thì lúc gửi lệnh nếu không có dữ liệu kèm theo thì nò sẽ tự động sang kiểu boolean.

Bây giờ bạn chỉnh lại code như sau:

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true,
            type : 'string'
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).argv;

// In ra xem thử
console.log(get_argv);

Chạy lên với lệnh như trên thì kết quả sẽ như trong hình sau:

options nodejs 04 png

Bạn thấy key username mình có khai báo typestring nên lúc này nó là một chuỗi rỗng.

Sử dụng alias

Alias là tạo định danh (tên rút gọn hoặc tên giả) cho một key nào đó. Ví dụ với key username mình muốn chỉ cần gõ us thay vì gửi username thì thao tác khai báo ký tự us thay thế username này ta gọi là khai báo định danh alias.

Để tạo alias thì bạn thêm key alias : value vào danh sách các options.

Ví dụ: Tạo alias us cho key username.

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true,
            type : 'string',
            alias : 'us'
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).argv;

// In ra xem thử
console.log(get_argv);

Bạn chạy với lệnh như sau:

code yargs-demo.js get --us cuong --email thehalfheart@gmail.com

Thì kết quả sẽ như hình dưới đây:

options nodejs 05 png

Như trong hình bạn thấy sẽ xuất hiện ba keys gồm us, usernameemail, trong đó key ususername là có giá trị giống nhau vì thực chất cả hai là một.

Lưu ý: Nếu alias của bạn chỉ có một ký tự thì ở lệnh chạy bạn chỉ cần một đấu gạch ngang. Ví dụ nếu alias là u thì lúc chạy sẽ là -u chứ không phải là --u.

Xác định gia trị mặc định.

Đôi lúc bạn muốn nếu người dùng không truyền key nào đó thì bạn sẽ lấy một giá trị mặc định thì bạn sử dụng key default : value.

Ví dụ: Tạo giá trị mặc định cho username là cuong.

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true,
            type : 'string',
            alias : 'u',
            default : 'cuong'
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).argv;

// In ra xem thử
console.log(get_argv);

Chạy lên với lệnh:

node yargs-demo.js get --email thehalfheart@gmail.com

Kết quả:

options nodejs 06 png

Bạn thấy rõ ràng mình không truyền username nhưng nó vẫn có giá trị là cuong.

Ngoài các options trên ra thì còn khá nhiều nên mình không thể đưa ra ví dụ hết được, sau này khi làm dự án chúng ta sẽ đụng tới thì mới nghiên cứu thêm.

3. Chức năng help

Chức năng help dùng để mô tả một hành động hoặc các tham số truyền vào.

Cú pháp:

require('yargs').command('action', 'Description', function (yargs) {
    // do something
}).help().argv;

Ví dụ: Tạo chức năng help cho action get.

var yargs = require('yargs');

var get_argv = yargs.command('get', 'Get List Students', function (yargs) {

    return yargs.options({
        username : { // cấu hình cho name
            demand : true,
            type : 'string',
            alias : 'u',
            default : 'cuong'
            // ...
        },
        email: { // cấu hình cho email
            demand : true
            // ...
        }
    });

}).help().argv;

// In ra xem thử
console.log(get_argv);

Bây giờ bạn chạy với lệnh sau:

node yargs-demo.js get help

Bạn sẽ nhận kết quả như sau:

options nodejs 07 png

Chức năng này có tác dụng quan trọng với người sử dụng API.

4. Lời kết

Như vậy chúng ta đã tìm hiểu xong một số tùy chọn options quan trọng trong modue Yargs. Bài này chủ yếu giới thiệu cách sử dụng đơn giản nên mình không đưa ra bài tập, bài tiếp theo chúng ta sẽ sử dụng Yargs kết hợp với node-persist để xây dựng ứng dụng quản lý sinh viên.

Hẹn gặp lại bạn ở bài tiếp theo.

Cùng chuyên mục:

Crawl dữ liệu website bằng NodeJS cơ bản

Crawl dữ liệu website bằng NodeJS cơ bản

CORS là gì ? Xử lý CORS trong NodeJS

CORS là gì ? Xử lý CORS trong NodeJS

Chắc hẳn trong quá trình xử lý các request tới server thì một vài trường…

Xử lý form trong Express

Xử lý form trong Express

Xây dựng URL trong Express

Xây dựng URL trong Express

Trong bài viết này chúng ta sẽ cùng nhau đi tìm hiểu về cách xây…

Populate trong Mongoose

Populate trong Mongoose

Error Handling & Debugging trong Socket.io

Error Handling & Debugging trong Socket.io

Namespaces & Rooms trong Socket.io

Namespaces & Rooms trong Socket.io

Middleware trong Mongoose

Middleware trong Mongoose

Create / Read / Update / Delete trong Mongoose

Create / Read / Update / Delete trong Mongoose

Validation trong Mongoose

Validation trong Mongoose

Subdocuments trong Mongooose

Subdocuments trong Mongooose

Documents trong Mongoose

Documents trong Mongoose

Trong bài viết này chúng ta sẽ tìm hiểu về documents trong Mongoose

Models trong Mongoose

Models trong Mongoose

SchemaTypes trong Mongoose

SchemaTypes trong Mongoose

Schemas trong Mongoose

Schemas trong Mongoose

Mongoose trong NodeJS

Mongoose trong NodeJS

Làm việc với Table MySQL sử dụng Nodejs

Làm việc với Table MySQL sử dụng Nodejs

Kết nối với MongoDB trong NodeJS

Kết nối với MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Giới thiệu MongoDB trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Insert / Update / Delete / Select MySQL trong NodeJS

Top