Skip to content
youhoc
  • Pages
    • Home
    • Modern App Guidelines
    • Linux
      • Day 1: Linux Distributions & Navigation
      • Day 2: User Management
      • Day 3: File Permission & Ownership
      • Day 4: Package Management
      • Day 5: Services Management
    • Javascript
      • JS The Weird Part
        • Execution Context
        • Types & Operators
        • Objects & Functions
        • Error Handling & Strict Mode
        • Typescript, ES6, Tra
      • Modern JS
        • JS in the Browser
        • Data Storage JSON
        • Modern JS
        • Advanced Objects & Methods
        • Webpack & Babel
        • Async
      • jQuery
        • In-depth Analysis of jQuery
      • React-ready JS
        • Arrow Function
        • Template Literals
        • Logical AND, OR, Ternary, Nullish Operators
        • Destructuring & Rest Operator
        • Array Method
        • Immutability and Spread Operator
        • Promises, Async/Await, Callback
    • PHP
      • gruntJS
      • composer
      • MySQL
    • Docker
      • Container Basics
      • Container Networking
      • Container Image
      • Container Volume & Persistent Data
      • Dockerfile
      • Docker Compose
      • Docker Registry
    • Node.js
      • 1. Installing & Exploring
      • 2. Core Modules
      • icon picker
        3. Get User Input
      • File System & Input Arguments
      • 5. Express Web Server
      • 6. Deploy to Heroku & Github
      • Authentication
      • 7. Databases
      • 8. Rest API
    • ReactJS
      • React from Andrew
        • Summary from Next
        • 1. Basics
        • 2. React Components
        • 3. Webpack
        • 4. Styling with SCSS
        • 5. React Router
        • 6. React Hook
      • Modern React From The Beginning
        • Intro to JSX
        • Vite Build Tools
        • Basic Component Creation
        • Component State
        • Props & Component Composition
        • useState with Inputs & Form Submission
        • useEffect, useRef & Local Storage
        • Async / Await and Http Request in React
        • React Router: Declarative Mode
        • ContextAPI
        • React Router: Framework Mode
          • File-routing & HTML Layouts
          • Server-side Data Query
          • Links & Navigation
          • Loaders
    • Typescript
      • Type User vs UserProp
    • Payload CMS

3. Get User Input

Truyền biến vào JS bằng cách thêm các giá trị phía sau hàm thực thi
node app.js Nghi --say="hello hehe"
Kiểm tra biến truyền vào bằng cách chạy process.argv (argument variables). process.argv là một mảng chứa 3 thứ:
đường dẫn đến node
đường dẫn đến file thực thi app.js
các biến khác

// hiển thị argv với 2 biến truyền vào như trên
console.log(process.argv)

// giá trị trả về của function
[
'/usr/local/bin/node',
'/Applications/XAMPP/xamppfiles/htdocs/Dropbox/learn-node/notes-app/app.js',
'Nghi',
'--say=hello hehe'
]

// có thể lấy biến ra và xử lý theo từng trường hợp (tuy nhiên phải đoán được thứ tự của mảng argv)

const command = process.argv[2]

if (command === 'add') {
console.log('add notes')
} else if (command === 'remove') {
console.log('remove notes')
}
Dùng package Yargs để xử lý các biến truyền vào app
Cài đặt
npm i yargs
Require
const yargs = require('yargs')
Chạy thử với argv
console.log(yargs.argv)
Hiển thị ra
{ _: [ 'Nghi' ], say: 'hello hehe', '$0': 'app.js' }
Biến đặt đầu tiên yargs hiểu là command
Các tham chiếu có dấu -- tự tách ra thành mảng, được hiểu là biến để command xử lý

yargs xử lý các tham số truyền vào app.js như câu lệnh và biến.
command : câu lệnh đầu tiên
builder : các tham số truyền vào
Chúng ta chỉ cần viết hàm để xử lý. Khai báo hàm như sau:
// code: truyền tất cả bién trong agrv vào command, tham số là argv.title (tên biến)
yargs.command({
command: 'add',
describe: 'add a new note',
builder: {
title: {
describe: 'Vui lòng điền tiêu đề note',
demandOption: true, // yêu cầu phải có tham số title
type: 'string', // tham số phải là chuỗi, không được booleen true / false

}
},
handler: function (argv) {
console.log('adding a new note' + argv.title)
}
})

// đây là câu lệnh hiển thị hàm bên trên
console.log(yargs.argv)

// thực thi
node app.js add --title="hello hehe"

// hiển thị (vẫn còn hiển thị các biến được truyền vào)
adding a new note { _: [ 'add' ], '$0': 'app.js' }
{ _: [ 'add' ], title: 'hello hehe', '$0': 'app.js' }

// nếu chạy với biến —help sẽ hiện ra các command đã được thiết lập

// thực thi
node app.js --help

// hiển thị
app.js [command]
Commands:
app.js add add a new note
Xử lý các command và builder bằng câu lệnh chạy hàm
yargs.parse()
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.