node.js学习随笔
来源:互联网 发布:小米官网和淘宝旗舰店 编辑:程序博客网 时间:2024/06/06 04:33
一、node.js与JavaScript的异同
在ECMAScript部分node和js其实是一样的,比如数据类型定义,语法结构,内置对象(原型prototype等)
不同点:
在js的顶层对象是 window (虽然window指向的为global,但是人们无法对global进行直接操作)
在node中的顶层对象为 global,而不是window
二、node中是分模块的,一个文件就是一个模块,每个模块都有自己的作用域
我们使用var来声明一个变量,它并不是全局的,而是属于当前模块下
但是如果使用global,则是全局的
模块加载使用 require(path) ,参数可以为绝对路径,也可以为相对路径。
绝对路径:require("c:\Users\xyong\WebstormProjects\untitled\module\1.js");
相对路径:require('./1.js');
但是,如果只写文件名,例如 require('1.js'); 则是指的加载node.js中的核心模块,或是node_modules文件夹下的模块,例如url=require('url');
require('./1');
1、模块加载时,首先按照加载模块的文件名称进行查找
2、如果没有找到,则会在模块文件名称后加上.js的后缀,进行查找
3、如果还没有找到,则会在文件名称后加上.json的后缀,进行查找
4、如果还没有找到,则会在文件名称后加上.node的后缀,进行查找
文件名称 -> .js -> .json -> .node
三、module : 保存提供和当前模块有关的一些信息
console.log(module);
在模块作用域,还有一个内置的模块对象————exports,它其实就是module.exports
console.log(module.exports===exports); //true
因此,module.exports={}; ,也可以写为 exports={};
注意:建议使用 module.exports={}; , exports 和 module.exports 是相互引用,注意不能 module.exports(或exports)=[1,2,3]; 否则会使它们的相互引用断开。
四、global下的process对象
可以获取当前进程的一些信息,如系统、环境的配置,内存使用情况,退出当前进程等,详情请百度
注意,process中的stdin和stdout,标准输入输出流(IO)。提供了操作输入数据和输出数据的方法,我们也通常称为IO操作
1、process.stdout.write(data); //输出数据
2、获取键盘输入
//默认情况下,输入流是关闭的,要监听处理输入流数据,首先要开启输入流
process.stdin.resume();
//用于监听用户的输入数据
process.stdin.on('data',function(mess){
console.log('获取到的输入信息为:');
process.stdout.write(mess);
});
五、Buffer类
Buffer类是全局的,不需要使用require导入
用于操作二进制数据流,常用于读取文件内容
Buffer存储的是字节信息,每个字节是八位二进制,使用两位十六进制表示。
一、创建Buffer类,一共有三种方式
注意:转换成的数据都是十六进制的。
1、new Buffer(size);
size [Number] 创建一个Buffer对象,并为这个Buffer分配一个大小。当我们为一个Buffer对象分配空间大小以后,其长度是固定的,不能更改。
var buffer=new Buffer(5);
buffer[7]=10;
console.log(buffer);
2、new Buffer(array);
array中的数据,即为生成的Buffer中的数据。并且,其长度是固定的,不能更改。
var buffer=new Buffer([1,2,3]);
buffer[5]=10;
console.log(buffer);
3、new Buffer(string,[encoding]);
第一个参数为字符串,第二个参数为编码格式。编码格式默认为utf-8
var buffer=new Buffer('xyong is god');
console.log(buffer);
var buffer1=new Buffer('xyong is god','utf-8');
console.log(buffer1);
二、输出储存的Buffer数据
var buffer=new Buffer('xyong is god');
//length为字节的长度,而不是字符的长度。例如'你好',字符长度为2,但是字节长度为6.
for(var i=0;i<buffer.length;i++){
//console.log(buffer[i]); //此时输出的数据转换为10进制
//输出的为十六进制对应的字符,即储存的信息
console.log(String.fromCharCode(buffer[i]));
}
三、Buffer对象方法
1、使用 write() 方法,
buffer.write(要传入的字符串,Buffer的开始位置,Buffer的长度,编码方式encoding);
var buffer=new Buffer(5);
var val='test message';
buffer.write(val); //因为Buffer的大小为5,所以只能传入5个字符
2、使用 toString() 方法
使用 toString() 可以使用下标,选择性输出Buffer对象的值,
注意:这里的下标指的是字节,一个汉字为3个字节
var buffer =new Buffer('test message');
console.log(buffer.toString());
console.log(buffer.toString('utf-8',1,3)); //包头不包尾
3、使用 toJSON() 方法
返回一个JSON表示的Buffer实例,JSON的第一个值为类型,第二个值为数据。
4、使用 slice() 方法
var buffer1=buffer.slice([start],[end]);
注意:新的buffer1将和老的buffer引用相同的内存地址。即改一个会改变另一个。
在ECMAScript部分node和js其实是一样的,比如数据类型定义,语法结构,内置对象(原型prototype等)
不同点:
在js的顶层对象是 window (虽然window指向的为global,但是人们无法对global进行直接操作)
在node中的顶层对象为 global,而不是window
二、node中是分模块的,一个文件就是一个模块,每个模块都有自己的作用域
我们使用var来声明一个变量,它并不是全局的,而是属于当前模块下
但是如果使用global,则是全局的
global.num=200; //注意,前面不能有varconsole.log(__filename); //返回当前模块文件的解析后的绝对路径,该属性其实并非全局,而是模块作用域下的console.log(__dirname); //返回当前模块文件所在目录解析后的绝对路径,该属性也不是全局的,而是模块作用域下的。
模块加载使用 require(path) ,参数可以为绝对路径,也可以为相对路径。
绝对路径:require("c:\Users\xyong\WebstormProjects\untitled\module\1.js");
相对路径:require('./1.js');
但是,如果只写文件名,例如 require('1.js'); 则是指的加载node.js中的核心模块,或是node_modules文件夹下的模块,例如url=require('url');
require('./1');
1、模块加载时,首先按照加载模块的文件名称进行查找
2、如果没有找到,则会在模块文件名称后加上.js的后缀,进行查找
3、如果还没有找到,则会在文件名称后加上.json的后缀,进行查找
4、如果还没有找到,则会在文件名称后加上.node的后缀,进行查找
文件名称 -> .js -> .json -> .node
三、module : 保存提供和当前模块有关的一些信息
console.log(module);
在模块作用域,还有一个内置的模块对象————exports,它其实就是module.exports
console.log(module.exports===exports); //true
因此,module.exports={}; ,也可以写为 exports={};
注意:建议使用 module.exports={}; , exports 和 module.exports 是相互引用,注意不能 module.exports(或exports)=[1,2,3]; 否则会使它们的相互引用断开。
四、global下的process对象
可以获取当前进程的一些信息,如系统、环境的配置,内存使用情况,退出当前进程等,详情请百度
注意,process中的stdin和stdout,标准输入输出流(IO)。提供了操作输入数据和输出数据的方法,我们也通常称为IO操作
1、process.stdout.write(data); //输出数据
2、获取键盘输入
//默认情况下,输入流是关闭的,要监听处理输入流数据,首先要开启输入流
process.stdin.resume();
//用于监听用户的输入数据
process.stdin.on('data',function(mess){
console.log('获取到的输入信息为:');
process.stdout.write(mess);
});
五、Buffer类
Buffer类是全局的,不需要使用require导入
用于操作二进制数据流,常用于读取文件内容
Buffer存储的是字节信息,每个字节是八位二进制,使用两位十六进制表示。
一、创建Buffer类,一共有三种方式
注意:转换成的数据都是十六进制的。
1、new Buffer(size);
size [Number] 创建一个Buffer对象,并为这个Buffer分配一个大小。当我们为一个Buffer对象分配空间大小以后,其长度是固定的,不能更改。
var buffer=new Buffer(5);
buffer[7]=10;
console.log(buffer);
2、new Buffer(array);
array中的数据,即为生成的Buffer中的数据。并且,其长度是固定的,不能更改。
var buffer=new Buffer([1,2,3]);
buffer[5]=10;
console.log(buffer);
3、new Buffer(string,[encoding]);
第一个参数为字符串,第二个参数为编码格式。编码格式默认为utf-8
var buffer=new Buffer('xyong is god');
console.log(buffer);
var buffer1=new Buffer('xyong is god','utf-8');
console.log(buffer1);
二、输出储存的Buffer数据
var buffer=new Buffer('xyong is god');
//length为字节的长度,而不是字符的长度。例如'你好',字符长度为2,但是字节长度为6.
for(var i=0;i<buffer.length;i++){
//console.log(buffer[i]); //此时输出的数据转换为10进制
//输出的为十六进制对应的字符,即储存的信息
console.log(String.fromCharCode(buffer[i]));
}
三、Buffer对象方法
1、使用 write() 方法,
buffer.write(要传入的字符串,Buffer的开始位置,Buffer的长度,编码方式encoding);
var buffer=new Buffer(5);
var val='test message';
buffer.write(val); //因为Buffer的大小为5,所以只能传入5个字符
2、使用 toString() 方法
使用 toString() 可以使用下标,选择性输出Buffer对象的值,
注意:这里的下标指的是字节,一个汉字为3个字节
var buffer =new Buffer('test message');
console.log(buffer.toString());
console.log(buffer.toString('utf-8',1,3)); //包头不包尾
3、使用 toJSON() 方法
返回一个JSON表示的Buffer实例,JSON的第一个值为类型,第二个值为数据。
4、使用 slice() 方法
var buffer1=buffer.slice([start],[end]);
注意:新的buffer1将和老的buffer引用相同的内存地址。即改一个会改变另一个。
阅读全文
0 0
- Node.js 学习随笔
- node.js学习随笔
- Node.Js 学习随笔2
- Node.js学习随笔(1)
- node.js学习随笔20170817
- node.js学习随笔——20170809
- node.js随笔1-初识node.js
- node.js随笔3-回调函数
- url及node.js url模块随笔
- JS学习随笔
- Vue.js学习随笔
- JS学习随笔
- 随笔NODE
- node.js入门学习
- node.js进阶学习
- Node.JS学习笔记
- Node.js 学习1
- Node.js学习历程
- 实现类似微博视频滚动自动播放与暂停
- Android使用ccache减少编译时间
- Annotation注解-高级
- AX功能索引(Dynamics AX 2012 R3 CU12)
- Vue和vue-template-compiler版本之间的问题
- node.js学习随笔
- 论“取势、明道、优术”的趋势
- Breadth-first Search -- Leetcode problem690. Employee Importance
- CSR-DCF视频目标跟踪论文笔记(1)——关于似然和后验概率在分割操作中的应用
- 关于Android so库的那些事
- AndPermission是一个运行权限管理库,兼容Android O,同时最大程度上兼容了国产机
- lambda表达式实战
- Android 进阶——实现周期性任务调度的几种攻略详解
- Android UI 优化工具--Hierarchy Viewer