Terminal(终端)
说起这个使用过linux系统的兄台一般都会知道的,本人理解:类似Putty这些ssh工具通过 软件来实现远程控制主机,对于我们使用者来说,它会显示信息并能接收信息并处理,这个东东就是终端。至于什么伪终端应该就是用软件实现使一套输入输出设备 可以支持多个软终端。
这里说下node.js中有关的终端模块3个,分别是:STDIO、TTY、REPL。
一、STDIO
如果我没理解错控制台应该是属于noddjs标准的输入输出,一般把信息输出到stdout或者是stderr。
二、TTY
这个tty好像就跟伪终端解析一样,现在还不明白,不过不是很主要听讲说是准备放弃。
三、REPL
这是一个交互式解释器,至于什么是交互性这不解释了。这个REPL为node运行的状态以及信息提供一种交互方式。比如我们在windows下命令行输入:
node
>consolg('hello world!');
这样就会打印出hello world字符。
四、利用控制台
上面使用console.log();语句打印信息,那么我们可以使用这个查看很多信息,比如变量的值、堆栈的信息以及断言。
console.log([data],[...]):第一个参数是字符串,可以带上像C语言一样的占位符,后面可选,本人网上查看了一些资料,占位符支持%s(字符串),%d(数字),%j(json)。例子如下:
//不带占位符以及参数,输出:hello world
console.log('hello world');
//带上占位符,不过不带参数。输出:hello
console.log('hello %s');
//带上占位符以及参数。输出:hello world
console.log('hello %s', 'world');
//输出:age is 30
console.log('age is %d',30);
//输出:json data:{'age':30}
console.log('json data:%j',{age:30});
//输出:{age:30}
console.log({age:30});
//时间标记,标识lable开始
console.time('lable');
//时间标记,标识lable结束。输出lable : 100ms(可以计算中间的处理时间)
console.timeEnd('lable');
//打印当前堆栈lable的信息。输出Trace : lable ----------------------
console.trace('lable');
//断言语法:console.assert(expression,[message])
//输出AssertionError : 异常咯
console.assert(false,'异常咯');
五、Buffer
这个Buffer的出现基本上说就是为了解决js本身对于二进制不友好的局面。大家都知道nodejs的存在依赖网络,对不同资源的请求以及响应甚至是文件都是用二进制出里的,使用inodejs专门提供这个机制来处理字节流。
目前本人收集了Buffer支持的编码有:'ascii':这个速度快;'utf8':支持Unicode字符;'base64':base64字符串编码; 'utf16le'、'ucs2'、 'hex'。
创建Buffer实例,目前知道的是有4种;
//第一种指定大小,这个大小是固定的不会因为write的写入而改变
var buf = new Buffer(8);
buf.write('luoliang');
console.log(buf);
//第二种:数组初始化。输出:<Buffer 01 03 fe ff 00>。可以看出是求256的余数,而且不是四舍五入完全是取整
var buf1 = new Buffer([1.2,3.7,254,255,256]);
console.log(buf1);
//第三种:字符串初始化并带编码,默认utf8
var buf2 = new Buffer('中国人');
//输出:中国人
console.log(buf2.toString());
//下面将会输出乱码
buf2 = new Buffer('中国人','ascii');
console.log(buf2.toString());
//下面将会输出: 9 e4b8ade59bbde4baba
var buf3 = new Buffer('中国人');
console.log(buf3.length);
console.log(buf3.toString('hex'));
//上面的不同编码对象的length是不同的,这个需要特别注意以下可以自己实验下
//还有一个创建Buffer对象的slice,不过这个我基本没用过,表示截取字符串创建buffer
var buf4 = new Buffer('中国人');
var buf5 = buf4.slice();
//输出:中国人
console.log(buf5.toString());
//输出:国
buf5 = buf4.slice(3,6);