当前位置: 首页 > news >正文

免费商城网站制作p2p网站建设 上海

免费商城网站制作,p2p网站建设 上海,网站托管服务是什么,织梦网站模板教程命令行交互核心实现 核心目标#xff1a;实现命令行行交互#xff0c;如List命令行的交互呢比命令行的渲难度要更大#xff0c;因为它涉及的技术点会会更多它涉及以下技术点 键盘输入的一个监听 (这里通过 readline来实现)计算命令行窗口的尺寸清屏光标的移动输出流的静默 …命令行交互核心实现 核心目标实现命令行行交互如List命令行的交互呢比命令行的渲难度要更大因为它涉及的技术点会会更多它涉及以下技术点 键盘输入的一个监听 (这里通过 readline来实现)计算命令行窗口的尺寸清屏光标的移动输出流的静默 (我们输出的内容, 不让它去输出到当前的这个终端中)借助输入输出流引出输入输出流的一个监听以及事件库 eventsansi escaped code 转义字符 命行交互其实是有一定复杂度的, 在这个过程中最重点的库和命行交互最重点库是两个 readline 和 inquirer inquirer inquirer 是一个命令行交互常用的库Weekly Downloads 30,375,340 (动态数据)作为一个命令行交互的库能做到这个程度可以说是非常的不简单而且一直在持续的进行维护目前已经达到9.2.15版本了安装 $ npm i -S inquirer使用示例1input类型演示import inquirer from inquirer; inquirer.prompt([{type: input,name: yourName,message: your name:,}]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});这里根据文档上的框架结构通过 type, name, message 三个字段即可完成初始化创建更多参考文档https://www.npmjs.com/package/inquirer#question 效果实例 另外比较常用的还有 default 默认值字段validate 字段是一个回调 用于对字段的校验只有校验返回 true的时候校验才会结束 transformer 字段用于处理信息展示的回调 也就是这个函数内部返回的值是展示的值返回的值还是之前的 name 字段更多的像是表单中的 placeholder 仅作为展示 filter 字段是一个回调 它会最终改变 answers 最终的结果会最终改变 name 字段 其他: choice 在匹配 List 列表的时候会用到注意prompt 方法内部接受的是一个数组可以写多个对象来收集数据使用示例2: 多字段演示import inquirer from inquirer;inquirer.prompt([{type: input,name: yourName,message: your name:,default: Lee,validate: function(v) {return v Wang},transformer: function(v) {return your input name: v // 仅作为展示},filter: function(v) {return v;// return v 123 // 改变最终值}},{type: number, // 这种在没有 validate 的情况下如果输入的是非数字, 会变成 NaNname: num,message: your number,},// ...]).then((answers) {console.log(answers); // 最终打印的是一个对象多个字段}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});在示例1中已做了详细说明这里不再赘述 效果实例 使用示例3: confirm 类型演示import inquirer from inquirer;inquirer.prompt([{type: confirm, // 二选一功能name: choice,message: your choice:,default: false,},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});效果实例 使用示例4: list 类型演示import inquirer from inquirer;inquirer.prompt([{type: list, // 列表单选name: choice,message: your choice:,default: 0, // 这里 default 是 下面choices 的索引choices: [{value: 1, name: LiLy},{value: 2, name: Lucy},{value: 3, name: Lee},]},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});效果实例 使用示例5: expend 类型演示import inquirer from inquirer;inquirer.prompt([{type: expand, // 简写选择name: choice,message: your choice:,default: red,choices: [{value: red, key: R},{value: green, key: G},{value: blue, key: B},]},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});简写选择功能除了 Rgb 还有一个 h输入 h 回车会得到 help 提示列出了所有选项输入 r 回车会得到 red, 输入 g 回车会得到 green 效果实例 使用示例6: checkbox 类型演示import inquirer from inquirer;inquirer.prompt([{type: checkbox, // 复选框name: choice,message: your choice:,default: 0,choices: [{value: 1, name: Lily},{value: 2, name: Lucy},{value: 3, name: Lee},]},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});这里提供 a 全选空格键 选中i 反选的功能默认上下箭来选择 效果实例 使用示例7: password 类型演示import inquirer from inquirer;inquirer.prompt([{type: password, // 密码框name: password,message: your password:,},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});效果实例 使用示例8: editor 类型演示import inquirer from inquirer;inquirer.prompt([{type: editor, // 编辑器name: editor,message: your editor text:,},]).then((answers) {console.log(answers);}).catch((error) {if (error.isTtyError) {// Prompt couldnt be rendered in the current environment} else {// Something else went wrong}});效果实例 上面中间的这个类似 vim 的界面会在一个缓存文件中输入完以后缓存文件被删除掉我们输入的结果会被保留下来如上图这样做的好处是在文本编辑器中输入复杂的内容 readline readline是 nodejs 当中的一个内置库主要帮我们去管理数据流的命令行当中要交互的方式一定是需要用户提供一些输入的readline 就可以很好的帮我们去一次一次的读取这个输入流注意这个输入不仅是指我们输入一些字符还包含我们键盘上输入的一切如上下空格回车等基本使用import * as readLine from readline;const rl readLine.createInterface({input: process.stdin,output: process.stdout, });rl.question(your name: , (answer) {console.log(answer);rl.close(); // 关闭读取流 })readline 主要用途是根据传入的输入流逐行读取信息回车的时候会认为这行输入结束并且把所有输入的内容传递到输出流中进行展示这是readline的核心用途如果调试 readline 源码可知它内部会强制将函数转换为构造函数if (!(this instanceof Interface)) {return new Interface(input, output, completer, terminal); }接着是对 StringDecoder的判断和赋值这个也是node的一个内置库if (StringDecoder undefined) {StringDecoder require(string_decoder).StringDecoder; }再之后定义了一些列的参数调用了 EventEmitterEventEmitter.call(this)这个用途是使用 this 继承 EventEmitter, this内部就会生成一些列的属性信息如 _events, _eventsCount让当前 Interface 实例具备事件驱动的能力因为nodejs有单线程非阻塞IO事件驱动的特性也就是说事件驱动在单线程的nodejs中是非常重要的 再接着定义一些参数 对 input 进行判断也就是分析 input 参数if (input input.input) {// .... }再往后找看readline是如何做事件监听的this.output output; // output: WriteStream 系统输出流 this.input input; // input: ReadStream 系统输入流// ...emitKeypressEvents(input, this) // 这里就是监听用户在终端中的键盘输入在 emitKeypressEvents 函数内部会调用一个 emitKeys 的方法这里是核心, 其原理和源码不在这里进行剖析
http://www.ho-use.cn/article/10820447.html

相关文章:

  • 江苏省常州建设高等职业技术学校网站多层分销网站建设
  • 创建一个网站的步骤是个人简历样本
  • 网站个人空间九一人才网赣州招聘
  • 东莞模板建站软件wordpress怎么设置搜索显示页面
  • 北京环保网站建设网站如何注册域名
  • 苏州微网站建设东莞企慕网站建设
  • 十大设计网站排名山东临沂网站建设
  • 网站开发职位工资山西省运城市
  • 建设项目环评在什么网站公示flash个人网站
  • 网站备案去哪里备案wordpress 返回顶部功能
  • 五大搜索引擎 三大门户网站dux wordpress
  • 商城网站开发商seo的基本步骤四个
  • 无锡网站怎么推广效果好做海报图片的网站
  • 织梦网站可以微信登录吗asp.net网站开发技术
  • 重庆网站建设优化个人淘宝客网站备案
  • 网站模板制作教程视频教程网站怎么优化关键词
  • 聊城网站建设包括哪些网站 用cms 侵权
  • 自己建的网站能赚钱吗黑龙江建设厅网站
  • 大连模板开发建站中国企业500强榜单2021
  • 网站排名优化快速三亚最新发布
  • 深圳做网站网络公司有哪些深圳设计公司电话
  • 网站开发策略两学一做网站条幅
  • 网站建设 安庆介绍自己的做的网站
  • 岳阳建设网站开发公司物业移交物业协议
  • 国内建网站流程杭州仪器网站制作
  • 文字游戏做的最好的网站怎么建网站 手机版
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路莱芜在线和莱芜都市网
  • 数码产品网站建设策划书做网站学什么
  • 特定网站开发用html制作网站流程
  • 网站换源码如何保留以前的文章东莞华为外包公司