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

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

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

前言

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

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

鏈接

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]

查看當(dāng)前待辦

二級菜單

清空所有待辦t clear

實(shí)現(xiàn)過程

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

這里我使用了commander庫來實(shí)現(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默認(rèn)會有兩個參數(shù),一個是node的路徑,一個是當(dāng)前文件的路徑,因此我們判斷參數(shù)的數(shù)量是否為2就可以判斷用戶是否傳參

如果用戶沒有傳參,則顯示所有的待辦項(xiàng)

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

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

這里我使用了inquirer庫來給命令行做了美化,實(shí)現(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)
  })
}

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

待辦項(xiàng)保存在本地

使用node.js的fs模塊來實(shí)現(xiàn)對文件的讀寫,這里涉及一個保存路徑的問題,在本項(xiàng)目中,為了方便使用了~目錄,所有數(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工具使用演示的詳細(xì)內(nèi)容,更多關(guān)于Cli Todo命令行todo工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 初學(xué)node.js中實(shí)現(xiàn)刪除用戶路由

    初學(xué)node.js中實(shí)現(xiàn)刪除用戶路由

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

    Node.js中MongoDB查詢數(shù)據(jù)的方法

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

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

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

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

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

    詳解electron如何攔截網(wǎng)絡(luò)請求并處理響應(yīng)

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

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

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

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

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

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

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

    Node.js中Express生成Token的實(shí)現(xiàn)方法

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

    Node.js操作MySQL8.0數(shù)據(jù)庫無法連接的問題解決

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

最新評論

沂源县| 昆山市| 黑龙江省| 成武县| 鹤壁市| 察雅县| 望江县| 定远县| 保德县| 通许县| 当雄县| 平远县| 志丹县| 江达县| 谷城县| 漳州市| 高阳县| 遵化市| 临桂县| 青阳县| 浦东新区| 甘南县| 和硕县| 蓬安县| 金寨县| 葫芦岛市| 高平市| 赤壁市| 霸州市| 新郑市| 临洮县| 余姚市| 沅陵县| 元氏县| 焦作市| 孟连| 义马市| 河北区| 武平县| 邛崃市| 嘉义市|