Node 基础学习
全局对象
global
- 为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。
- 直接 a=1,a 这个属性会挂在 global 对象上
- 在 nodejs 中你不可能在最外层定义变量,因为所有的用户代码都是属于当前模块的,而当前模块本身也不是最外层
- 永远使用 var 定义变量,而避免引入全局变量,防止污染命名空间,防止代码的耦合风险
global上的属性
process
- 描述当前进程状态,提供了一个与操作系统的简单接口
- stdout 标准输出流
- stdin 标准输入流
- argv 一个由命令脚本执行时的各个参数组成的数组,第一个参数是 node,第二个参数是脚本文件名,之后的是传进来的脚本参数
- version node 的版本号
- versions node 的版本和依赖
- pid 当前进程的进程号
- nextTick(callback) 当前事件环循环结束,调用回调
- kill(pid,signal) 发送信号给进程
- memoryUsage() 返回一个对象,描述了 node 进程所用的内存状况,字节
- abort() 会让node 退出并生成一个核心文件
- chdir(directory) 改变当前进程的工作目录,如果失败抛出异常
- cwd() 返回当前进程的工作目录,会随 chdir 改变而改变
Buffer
- buffer 对象。也是构造函数
创建 buffer
- var buffer=new Buffer(size)
- var buf = new Buffer([10, 20, 30, 40, 50]);
- var buf = new Buffer("sunyongjian", "utf-8");
- 在utf-8的编码 一个英文字符--》一个字节 一个中文等于三个字节
- buffer定义每个字节都是16进制的 因为一个字节是八位2进制的组成,2的八次方-1 一个字节转化成10进制最大为255.转化成16进制最大为ff
buffer 实例的方法
原型上的方法
fill
实例.fill() 第一个参数是 value (支持 number,string)
第二个参数是 起始位置 第三个参数是 结束位置 如果给的位置不够会默认截取 value 的开始部分 填进 buffer
如果后面的参数不给,就默认全部替换成value
var buffer=new Buffer('珠峰');
console.log(buffer); //<Buffer e7 8f a0 e5 b3 b0>
buffer.fill("A",1,2);
console.log(buffer); //<Buffer e7 41 a0 e5 b3 b0>
write
- string 要写入的内容
- offset 偏移量
- 写的长度
- encoding 编码
var buffer=new Buffer(6);//<Buffer 90 db 0d 00 00 00>
buffer.write("珠",1,3,"utf8");//<Buffer 00 e7 8f a0 00 00>
console.log(buffer);
copy
var buff = new Buffer(12); //先创建一个长度为12的随机取值的buffer
var buff1= new Buffer("一二");
var buff2= new Buffer("三四"); //把这两个buff copy进去
//buff1.copy(targetBuffer,targetStart,sourceStart,sourceEnd)//目标buffer 目标buffer的开始位置 buff1的截取起始,结束 都是索引包前不包后
buff1.copy(buff,0,0,6); // 起始位置不写默认是从0 开始 源不写默认从0-结束
buff2.copy(buff,6,0,6);
现在 buff1 和 buff2 的内容就拼接到 buff 里了
- slice 跟数组和字符串的 slice 类似
- 返回一个新的 buffer 把截取结果给它,不同之处在于 newbuffer 修改内容,老 buffer 的内容也会变
var buffer=new Buffer('一二');
buffer.slice(0,7).toString(); // "一二"
构造函数上的方法
- concat 这是构造函数上的方法,里面的参数是一个数组,数组里包含要拼接的buffer 返回一个拼接好的新 buffer
var buff1=new Buffer([1,2,3]);
var buff2=new Buffer([4,5,6]);
console.log(Buffer.concat([buff1,buff2])); //
- 引入内置模块解决 截取中文 乱码问题
var StringDecoder=require("string_decoder").StringDecoder;
var sd=new StringDecoder;
var buffer=new Buffer("珠峰");
console.log(buffer.slice(0,4).toString()); // 珠�
console.log(buffer.slice(4).toString()); //��
console.log(sd.write(buffer.slice(0,4))); //珠
console.log(sd.write(buffer.slice(4))); //峰
每个当前模块自带而注入的参数
__dirname
- 表示当前执行脚本所在的目录
__filename
- 表示当前正在执行的脚本的文件名。它将输出文件所在位置的绝对路径。如果在模块中,返回的值是模块文件的路径。
内置模块
util
util.inspect
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JS 中的继承小结
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论