此文章已经发表于本人博客。
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);
这次的笔记先到这里,接下来继续!