最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

bald3r-node-todo是一個用node.js開發(fā)的,主要用于命令行的todo工具,主要使用了fs模塊,目前已經發(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

實現過程

實現命令行參數

這里我使用了commander庫來實現參數功能

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默認會有兩個參數,一個是node的路徑,一個是當前文件的路徑,因此我們判斷參數的數量是否為2就可以判斷用戶是否傳參

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

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

實現可以操作的命令行

這里我使用了inquirer庫來給命令行做了美化,實現可以用方向鍵和回車控制的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)
  })
}

這樣便實現了下圖的二級菜單

待辦項保存在本地

使用node.js的fs模塊來實現對文件的讀寫,這里涉及一個保存路徑的問題,在本項目中,為了方便使用了~目錄,所有數據保存在~/.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()即可完成對數據的讀寫。這里需要注意這兩個操作都是異步的,因此用到了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工具使用演示的詳細內容,更多關于Cli Todo命令行todo工具的資料請關注腳本之家其它相關文章!

相關文章

  • 初學node.js中實現刪除用戶路由

    初學node.js中實現刪除用戶路由

    這篇文章主要介紹了node.js中如何實現刪除用戶路由,下面和小編來一起學習一下吧
    2019-05-05
  • Node.js中MongoDB查詢數據的方法

    Node.js中MongoDB查詢數據的方法

    在Node.js中,可以使用MongoDB驅動程序和Mongoose庫來進行MongoDB的查詢操作,本文就來介紹一下Node.js中MongoDB查詢數據的方法,感興趣的可以了解一下
    2023-12-12
  • nodejs轉換音頻文件格式并壓縮導出zip格式(vscode語音插件開發(fā))

    nodejs轉換音頻文件格式并壓縮導出zip格式(vscode語音插件開發(fā))

    FFmpeg是一套開源的音視頻處理工具,通俗地講,可以對音視頻文件進行剪切、拼接、水印、轉碼等處理,這篇文章主要介紹了nodejs轉換音頻文件格式并壓縮導出zip格式(vscode語音插件開發(fā)),需要的朋友可以參考下
    2023-05-05
  • webpack創(chuàng)建項目并打包的詳細流程記錄

    webpack創(chuàng)建項目并打包的詳細流程記錄

    webpack在前端工程領域起到了中流砥柱的作用,理解它的內部實現機制會對你的工程建設提供很大的幫助(不論是定制功能還是優(yōu)化打包),下面這篇文章主要給大家介紹了關于webpack創(chuàng)建項目并打包的詳細流程,需要的朋友可以參考下
    2023-03-03
  • 詳解electron如何攔截網絡請求并處理響應

    詳解electron如何攔截網絡請求并處理響應

    這篇文章主要為大家詳細介紹了electron如何攔截網絡請求并處理響應,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • 如何在Express4.x中愉快地使用async的方法

    如何在Express4.x中愉快地使用async的方法

    這篇文章主要介紹了如何在Express4.x中愉快地使用async的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 深入分析node.js的異步API和其局限性

    深入分析node.js的異步API和其局限性

    這篇文章首先給大家介紹了為什么要用異步API,其次node.js異步api在使用過程有一些什么樣的限制呢,對于這個問題我們下面來看看這篇關于node.js異步的介紹分析吧,有需要的可以參考借鑒。
    2016-09-09
  • node異步使用await和不用await的區(qū)別實例分析

    node異步使用await和不用await的區(qū)別實例分析

    這篇文章主要介紹了node異步使用await和不用await的區(qū)別,結合實例形式分析了node.js異步使用await和不用await的實例中,同步與異步執(zhí)行的區(qū)別,需要的朋友可以參考下
    2023-06-06
  • Node.js中Express生成Token的實現方法

    Node.js中Express生成Token的實現方法

    本文介紹了在Express中生成和使用Token進行用戶認證的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • Node.js操作MySQL8.0數據庫無法連接的問題解決

    Node.js操作MySQL8.0數據庫無法連接的問題解決

    使用node.js連接數據庫MySQL 8時候,顯示報錯 ER_NOT_SUPPORTED_AUTH_MODE,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-10-10

最新評論

西贡区| 中阳县| 刚察县| 罗定市| 林州市| 云南省| 鄂温| 盐亭县| 高雄县| 长沙市| 通江县| 新平| 沁源县| 盘锦市| 黎川县| 绵阳市| 长寿区| 浦北县| 冷水江市| 南投县| 卫辉市| 安义县| 沛县| 丽水市| 新沂市| 庄河市| 襄汾县| 大同县| 嘉义市| 宁安市| 平湖市| 龙海市| 莲花县| 大丰市| 莎车县| 西峡县| 固安县| 桑日县| 兰州市| 平原县| 垣曲县|