美文网首页
读<了不起的Node.js>-07.对命令行一探究竟

读<了不起的Node.js>-07.对命令行一探究竟

作者: 在路上的海贼 | 来源:发表于2018-08-04 16:45 被阅读0次

CLI(Command Line Interface for batch scripting)

  • 完成了首个命令行程序之后,有必要学习一些API,他们对于书写在终端运行的类似程序很有帮助

argv

  • process.argv包含了所有node程序运行时的参数

  • image.png
  • 第一个元素是node文件所在路径,后面是调用文件路径,在这之后才是真正的参数

  • image.png
  • 接下来要学会获取真正的元素

    - image.png
  • image.png
  • 去除前两个元素才显示真正参数

  • 学会获取两个不同的目录,一个是程序本身所在的目录,一个是程序运行时的目录

工作目录

  • 在此之前我们用__dirname来获取执行文件时该文件在文件系统中所在的目录

  • 有的时候,我们希望获得程序运行时的当前工作目录,以前例而言,如果在home目录下运行改程序,获取当前工作目录和掐他目录下运行时一样的,因为Index.js文件的路径始终没有变化,因此__dirname 也不会变

  • 而==获取当前工作目录可以调用 process.cwd方法==:

  • image.png
  • 打印结果

    - image.png
  • node还提供了process.chdir方法允许灵活的更换目录

  • 实验不出来..尴尬

  • image.png

环境变量

  • node 允许process.env变量来轻松访问windows的环境变量路径

退出

  • 要让一个程序退出可以调用 process.exit并提供一个退出码,建议写1

信号

  • 进程和操作系统进行通信的其中一种方式就是通过信号,例如,要让进程终止,SIGKILL
  • node程序是通过在process对象上以事件分发的形式来发送信号的
process.on('SIGKILL',function(){
    //信号已经收到
});

ANSI转义码

  • 要在文本终端下控制格式.颜色以及输出其他输出选项,可以使用ANSI转义码.
  • 在文本周围添加的明显不用于输出的字符,称为非打印字符
  • 例如
  • console.log('\033[90m'+data.replace(/(.*)/g,' $1')+ '\033[39m');
    • \033 表示转义序列开始
    • [ 表示开始颜色设置
    • 90 表示前景色为亮灰色
    • m 表示颜色设置结束了
    • 最后我们用的是39,没错 这是用来将颜色再设置回去的

对fs一探究竟

  • fs模块允许通过 Stream API来对数据进行读写 与readFile及writeFile不同,它对内存的非配不是一次完成的

stream(流)

  • fs.createReadStream方法允许为一个文件创建一个可读的流对象
fs.readFile('test.txt', function (err, contents) {
    // console.log(contents.toString());
});

let stream = fs.createReadStream('test.txt');
stream.on('data', function (chunk) {
    console.log(chunk);
});
stream.on('end', function (chunk) {
    console.log(chunk);
});
  • 第一个可以理解就是当整个文件读取完毕,载入ram,可用的情况下才会触发
  • 第二个是用来处理大文件,分步进行读取,并每次读取后触发回调函数
  • 第二个理解不是很好 要加强

监视

  • node允许监视文件或者目录是否发生变化,监视意味着当文件系统中得文件发生变化时候会分发一个事件,然后触发指定的回调函数
  • 下面我们来监视一个文件的变化

 let fs = require('fs');
<!--let stream = fs.createReadStream('test.txt');-->

//获取目录下的所有文件
let files = fs.readdirSync(process.cwd());
console.log(process.cwd());

files.forEach(function (file) {
    //监听后缀为.css的文件
    console.log(file);
    if (/\.css/.test(file)) {
        fs.watchFile(process.cwd() + '/' + file, function () {
            console.log(' - ' + file + ' changed!');
        })
    }
});
  • 虽然有效但是很慢...

相关文章

网友评论

      本文标题:读<了不起的Node.js>-07.对命令行一探究竟

      本文链接:https://www.haomeiwen.com/subject/dfumvftx.html