Chủ đề nổi bật
03/08/2018, 10:24

Bài 09: 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ỉ ...

Ở 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.

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ố username và email.

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à username và email, mỗi key là một object chứa nhiều options bao gồm trong hình dưới đây.

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.

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.

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:

Bạn thấy key username mình có khai báo type là string 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:

Như trong hình bạn thấy sẽ xuất hiện ba keys gồm us, username và email, trong đó key us và username 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ả:

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:

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.

-------------------#####-------------------

DOWNLOAD TÀI LIỆU NODEJS

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan
Mới nhất

Express căn bản

BÀI KẾ SAU BÀI KẾ TIẾP

NodeJS Modules

BÀI KẾ SAU BÀI KẾ TIẾP

NodeJS Tutorials

BÀI KẾ SAU BÀI KẾ TIẾP

NodeJS căn bản

Xin giới thiệu với các bạn một chuyên đề mới ra đầu năm 2016 đó là chuyên đề học NodeJS căn bản , đây là chuyên đề dành cho những bạn chưa biết về NodeJS và muốn trải nghiệm cũng như là tự học nó. Bây giờ là đầu năm 2016 nên ai cũng phải có mục tiêu cho riêng mình và cá nhân mình cũng vậy, ...

Socket.io Chat Application

BÀI KẾ SAU BÀI KẾ TIẾP

NodeJS Server

BÀI KẾ SAU BÀI KẾ TIẾP

Bài 09: 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ỉ ...

Bài 05: Tạo Project cho chuyên đề học NodeJS

Để tiện cho việc viết bài lẫn việc học của các bạn thì trong bài này mình sẽ ...

Bài 12: Mã hóa chuỗi trong NodeJS với module CryptTo-JS

Đôi khi bạn muốn mã hóa thông tin trước khi lưu vào cơ sở dữ liệu để thông tin được an toàn hơn. Ví dụ khi bạn thiết lập mật khẩu cho User thì bạn ...

Bài 07: Chương trình quản lý học sinh trong NodeJS

Như vậy ở bài thứ 5 mình đã giới thiệu sơ lược cách hoạt động của Module ...