欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Cli Todo命令行todo工具使用演示

 更新時間:2022年08月08日 15:03:38   作者:bald3r  
這篇文章主要為大家介紹了Cli Todo命令行todo工具使用演示示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

bald3r-node-todo是一個用node.js開發(fā)的,主要用于命令行的todo工具,主要使用了fs模塊,目前已經(jīng)發(fā)布至npm

本工具主要使用了面向接口的編程思想,并用jest進行單元測試

鏈接

baIder/node-todo (github.com)

bald3r-node-todo - npm (npmjs.com)

使用演示

  • 首先使用yarnnpm安裝bald3r-node-todo
npm install bald3r-todo
yarn global add bald3r-todo

安裝完成后就可以使用全局命令t來使用了

使用命令行添加一個待辦t add [taskName]

查看當前待辦

二級菜單

清空所有待辦t clear

實現(xiàn)過程

實現(xiàn)命令行參數(shù)

這里我使用了commander庫來實現(xiàn)參數(shù)功能

program
  .command('add')
  .description('add a task')
  .action((...args) => {
    const words = args.slice(0, -1).join(' ')
    api.add(words).then(() => {
      console.log('The task has been successfully added')
    }, () => {
      console.log('Failed to add the task')
    })
  })
program
  .command('clear')
  .description('clear all tasks')
  .action(() => {
    api.clear().then(() => {
      console.log('All tasks have been successfully removed')
    }, () => {
      console.log('Failed to remove all the tasks')
    })
  })

commander默認會有兩個參數(shù),一個是node的路徑,一個是當前文件的路徑,因此我們判斷參數(shù)的數(shù)量是否為2就可以判斷用戶是否傳參

如果用戶沒有傳參,則顯示所有的待辦項

if (process.argv.length === 2) {
  api.showAll()
}

實現(xiàn)可以操作的命令行

這里我使用了inquirer庫來給命令行做了美化,實現(xiàn)可以用方向鍵和回車控制的UI界面

inquirer的使用非常簡單,這里我展示二級菜單作為參考

function askForAction(list, index) {
  const actions = {markAsUndone, markAsDone, changeTitle, removeTask}
  inquirer.prompt({
    type: 'list',
    name: 'action',
    message: 'What to do with the task?',
    choices: [
      {name: 'Exit', value: 'quit'},
      {name: 'Mark as Done', value: 'markAsDone'},
      {name: 'Mark as Undone', value: 'markAsUndone'},
      {name: 'Edit Title', value: 'changeTitle'},
      {name: 'Delete', value: 'removeTask'},
    ]
  }).then(answer2 => {
    const action = actions[answer2.action]
    action && action(list, index)
  })
}

這樣便實現(xiàn)了下圖的二級菜單

待辦項保存在本地

使用node.js的fs模塊來實現(xiàn)對文件的讀寫,這里涉及一個保存路徑的問題,在本項目中,為了方便使用了~目錄,所有數(shù)據(jù)保存在~/.todo

獲取~目錄:

const homedir = require('os').homedir()
const home = process.env.HOME || homedir

考慮到跨平臺使用路徑的表示方式不同,這里使用了node.js中的path模塊:

const p = require('path')
const dbPath = p.join(home, '.todo')

然后使用fs模塊中的fs.readFile()fs.writeFile()即可完成對數(shù)據(jù)的讀寫。這里需要注意這兩個操作都是異步的,因此用到了Promise,這里的{flag: 'a+'}是表示讀取文件,若不存在則創(chuàng)建一個:

read(path = dbPath) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, {flag: 'a+'}, (error, data) => {
      if (error) return reject(error)
      let list
      try {
        list = JSON.parse(data.toString())
      } catch (error2) {
        list = []
      }
      resolve(list)
    })
  })
}

以上就是Cli Todo命令行todo工具使用演示的詳細內(nèi)容,更多關(guān)于Cli Todo命令行todo工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 從零揭秘npm install的黑科技

    從零揭秘npm install的黑科技

    通過npm package manager來安裝和管理包是我們最為常見的方式之一,本文將從淺入深地帶大家剖析一下npm install的執(zhí)行過程,感興趣的可以學習一下
    2023-05-05
  • 如何用node優(yōu)雅地打印全鏈路日志

    如何用node優(yōu)雅地打印全鏈路日志

    這篇文章主要給大家介紹了關(guān)于如何用node優(yōu)雅地打印全鏈路日志的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • 詳解Koa中更方便簡單發(fā)送響應的方式

    詳解Koa中更方便簡單發(fā)送響應的方式

    這篇文章主要介紹了詳解Koa中更方便簡單發(fā)送響應的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • node.js文件的壓縮解壓問題

    node.js文件的壓縮解壓問題

    這篇文章主要介紹了node.js文件的壓縮解壓問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 一個簡單的node.js界面實現(xiàn)方法

    一個簡單的node.js界面實現(xiàn)方法

    今天小編就為大家分享一篇一個簡單的node.js界面實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • nodejs實現(xiàn)用戶登錄路由功能

    nodejs實現(xiàn)用戶登錄路由功能

    這篇文章主要介紹了nodejs中實現(xiàn)用戶登錄路由功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 手把手教你實現(xiàn) Promise的使用方法

    手把手教你實現(xiàn) Promise的使用方法

    這篇文章主要介紹了手把手教你實現(xiàn) Promise的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 關(guān)于nodejs和npm版本不匹配的解決方法

    關(guān)于nodejs和npm版本不匹配的解決方法

    在運行npm命令時總會出現(xiàn)如下報錯,npm?dose?not?support?Node.js v12.18.0,發(fā)現(xiàn)是node版本和npm版本不匹配造成的,所以本文給大家介紹了關(guān)于nodejs和npm版本不匹配的解決方法,需要的朋友可以參考下
    2023-11-11
  • node簡單實現(xiàn)一個更改頭像功能的示例

    node簡單實現(xiàn)一個更改頭像功能的示例

    本篇文章主要介紹了node簡單實現(xiàn)一個更改頭像功能的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 使用koa-log4管理nodeJs日志筆記的使用方法

    使用koa-log4管理nodeJs日志筆記的使用方法

    這篇文章主要介紹了使用koa-log4管理nodeJs日志筆記的使用方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論