nodejs复习01

console

格式化
console.log("%s:%s", "a", "b") //字符串
console.log("%d.%d", 10.2, 0.12) //整型
console.log("%j", {a: "aa", b: "bb"}) //json
冲定向错误输出柳
  • 对于throw Erro, console.error, console.warn
  • node exec.js 2 > error.log
查看对象属性和方法
console.dir(obj)

//等价
var util = require('util')
console.log(util.inspect(obj));
计时器
console.time(label)  //开始
console.timeEnd(label)  //结束
查看当前调用栈
//打印当前位置的栈,并跟踪到标准错误输出流
console.trace(label)
断言
console.assert(expression, error message)
//相当于
var assert = require('assert')
assert.okt(expression, error message)

readline

命令行输入数据
var readline = require('readline')
var read = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

read.question("you name?", function(answer) {
    console.log(answer);
    read.close()
})
向控制台输出组合控制键
//3s后模拟ctrl+u
var readline = require('readline')
var read = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

read.write("Delete me! Wait for 3 seconds...")

var timer = setTimeout(function () {
    read.write(null, {ctrl: true, name: 'u'})
}, 3000)


//read,write(data, key) key是一个代表键序列的对象
模拟控制台界面
//read.prompt(boolean)  为true或空时可以阻止命令提示符的光标被重置为0

var readline = require('readline')
var read = readline.createInterface({
    input: process.stdin,
    output: process.stdout
})

read.setPrompt('NodeJs>')
read.prompt()

read.on("line", function (line) {
    switch(line.trim()) {
        case 'book1':
            console.log(100);
            break;
        case 'book2':
            console.log(200);
            break;
        default:
            console.log('no');
            break;
    }
    read.prompt()
})
    .on('close', function () {
        console.log('bye');
        process.exit(0);
    })

module

node_modules文件加载
  • module.paths: 数组返回加载的依次路径
module.exports 对象和exports对象
module.parent 指向该module被require时的module,可以用于测试判读
  • module.exportsmodule模块的真正接口, exports是指向它的变量;
  • 所以设置module.exportsexports设置就失效了

Buffer

js语言本身仅仅支持Unicode字符串数据处理
初始化
var buffer1 = new Buffer([0x6e, 0x6f, 0x64, 0x65, 0x6a, 0x73]) 
var buffer2 = new Buffer('nodejs')                                              
//显示都为<Buffer 6e 6f 64 65 6a 73>, 16进制, hex

buffer.toString(encoding, start, end)  // 默认utf8, 还有hex, binary, base64, utf16le, ascii

//特别定义
var buffer = new Buffer(length)     /分配大小为length的8位字节
buffer.write(string, offset, length, encoding)  

//判断是否为指定编码
buffer.isEncoding(encoding)
Buffer字节长度
str.length //字符长度
Buffer.byteLength(str, encoding)  //字节长度
  • 在改写http响应头Content-Length时一定要使用该方法而不是修改length
基本操作
var buf = new Buffer('nodejs')

//裁减, buf.slice(start, end)
var buf1 = buf.slice() // 副本, buf1和buf2指向同一地址

buf1[0] = 97  //ASCII 'a'
console.log(buf.toString());  //anodejs
console.log(buf1.toString());  //anodejs


//拷贝 buf.copy(target, targetStart, sourceStart, sourceEnd)
var buf2 = new Buffer(buf.length)
buf.copy(buf2,0,0,buf.length)

buf2[0] = 110  //ASCII 'n'
console.log(buf.toString());  //anodejs
console.log(buf2.toString());  //nnodejs


//拼接  Buffer.concat(list, totalLength)
//如果totalLength没有提供会增加额外的计算
var list = [], len = 0;
for (var i = 0; i < 4; i++) {
    list.push(buf)
    len += buf.length
}

var buf3 = Buffer.concat(list, len)

console.log(buf3.toString());

转载于:https://www.cnblogs.com/jinkspeng/p/6077883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值