差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
it:node:命令行 [2021-10-16 05:07] – [刷新顯示] goldentianyait:node:命令行 [2023-08-07 16:19] (当前版本) – [建立程序] goldentianya
行 2: 行 2:
  
 ===== 建立程序 ===== ===== 建立程序 =====
 +
 +准备:在服务器上安装 node.js 以及 npm
 +<code shell>
 +sudo apt install nodejs
 +sudo apt install npm
 +</code>
  
 首先初始化一個項目((a>[[https://segmentfault.com/a/1190000039110450|Node.js-CLI开发工具]])) <color #ff7f27>''%%npm init%%''</color>,在 package.json 中設定工具名稱 首先初始化一個項目((a>[[https://segmentfault.com/a/1190000039110450|Node.js-CLI开发工具]])) <color #ff7f27>''%%npm init%%''</color>,在 package.json 中設定工具名稱
行 15: 行 21:
 </code> </code>
  
-在本目錄下全局安裝 <color #ff7f27>''%%npm install -g%%''</color> 後即可使用 <color #ff7f27>''%%golden xxx%%''</color> 命令。 +在本目錄下全局安裝 <color #ff7f27>''%%npm install -g%%''</color> 後即可使用 <color #ff7f27>''%%golden xxx%%''</color> 命令。 (因为在package.json中已经定义了bin的执行路径)
  
 ===== 交互式命令行 ===== ===== 交互式命令行 =====
行 41: 行 47:
 * 具體使用方式請參照 api 工程以及 ((a)) 文章。 * 具體使用方式請參照 api 工程以及 ((a)) 文章。
  
-====== 刷新顯示 ======+====== readline ====== 
 + 
 +[[https://nodejs.org/api/readline.html|readline 官方文檔]]
  
 為了不讓console的輸出結果太長,需要清除臨時顯示的行,借助 readline.js 庫文件((b>[[https://www.w3schools.com/nodejs/ref_readline.asp|readline 3w]])) <color #ff7f27>''%%npm install readline%%''</color> 為了不讓console的輸出結果太長,需要清除臨時顯示的行,借助 readline.js 庫文件((b>[[https://www.w3schools.com/nodejs/ref_readline.asp|readline 3w]])) <color #ff7f27>''%%npm install readline%%''</color>
行 55: 行 63:
 } }
 </code> </code>
 +
 +常用命令
 +  * clearLine()
 +  * cursorTo()
 +  * moveCursor()
 +  * clearScreenDown()
 +  * createInterface()
 +  * emitKeypressEvents()
 +
 +**接受用户输入**
 +<code javascript>
 +this.RL = readline.createInterface({input: process.stdin, output: process.stdout, terminal: true})
 +// 监听 line 事件
 +this.RL.on('line', (line:string) => {
 +  this.observer.next(line)
 +  this.counter++
 +  this.RL.pause()
 +})
 +// 外部等待输入
 +this.RL.setPrompt(prompt);
 +this.RL.prompt();
 +return new Promise((resolve, reject) => {
 +  this.observer.subscribe((value:any) => {
 +    resolve(value.trim())
 +  });
 +})
 +</code>
 +
 +调用 <color #7092be>inquirer</color> 之后 readline 的上下箭头不显示历史记录,变成 <color #ff7f27>''%%⌃[[A%%''</color> 这样的乱码字符串,修正这个错误需要调用 <color #ff7f27>''%%process.stdin.setRawMode( true ); %%''</color> 函数。
 ====== 交互工具 ====== ====== 交互工具 ======
  
-需要借助 inquire.js ((c>[[https://blog.csdn.net/qq_26733915/article/details/80461257|inquirer.js —— 一个用户与命令行交互的工具]])) 庫來實現命令交互。+需要借助 inquire.js ((c>[[https://blog.csdn.net/qq_26733915/article/details/80461257|inquirer.js —— 一个用户与命令行交互的工具]])) ((d>[[https://www.npmjs.com/package\//inquirer|Inquirer.js <em>''\//'']]))庫來實現命令交互。
  
 安裝工具 <color #ff7f27>''%%npm install inquirer%%''</color> 後在js/ts文件中使用: 安裝工具 <color #ff7f27>''%%npm install inquirer%%''</color> 後在js/ts文件中使用:
it/node/命令行.1634360868.txt.gz · 最后更改: 2021-10-16 05:07 由 goldentianya
回到顶部
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0