百度安装node
新建项目
根目录新建server.js
1 | var http = require('http'); //引入http模块 |
当前目录打开命令行 运行node server.js
1 | F:\Createwj.github.io\source\node\1>node server.js |
在浏览器打开 http://127.0.0.1:8888/
express
安装express框架
1 | npm install express |
文件读取
阻塞代码例子
1 | var fs = require("fs"); //文件读写 |
非阻塞代码例子
1 | var fs = require("fs"); |
非阻塞的时候先输出Program Ended 在输出文件读取内容 异步 适合高并发’
Node.js事件循环参考
Node JS是单线程应用程序,但它通过事件和回调概念,支持并发。
由于Node JS每一个API是异步的,作为一个单独的线程,它使用异步函数调用,以保持并发性。
在事件驱动的应用中,通常主循环监听事件,然后触发回调函数时被检测到这些事件之一。

Node.js事件发射器
EventEmitter 类
1 | // Import events module |
EventEmitter实例对任何错误,它会发出一个“error”事件。当新的侦听器被添加,“newListener’事件被触发,当一个侦听器被删除,’removeListener”事件被触发。
EventEmitter提供多种性能如在发射。On属性用于绑定事件函数,发射用于触发一个事件。
Node.js缓冲器
纯JavaScript是Unicode友好的,但对二进制数据不是很好。当与TCP流或文件系统打交道时,有必要处理字节流。 Node提供缓冲器类,它提供实例来存储原始数据相似的一个整数数组,但对应于在V8堆外的原始存储器的分配。
Buffer类是一个全局类,可以在应用程序,导入缓冲模块进行访问。
创建缓冲区
1 | var buf = new Buffer(10); //创建10个字节的汉缓冲的语法: |
写到缓冲器
1 | buf.write(string[, offset][, length][, encoding]) //写入到一个节点缓冲器的方法的语法: |
string - 这是要被写入的数据串缓冲区。
offset - 这是缓冲区开始的索引。默认值为0。
length - 这是要写入的字节的数目。默认是 buffer.length
encoding - 编码使用。 “UTF8”是默认的编码
从缓冲器读取
1 | buf.toString([encoding][, start][, end]) |
-encoding - 编码使用。 “UTF8”是默认的编码
- start - 开始读取的索引,默认为0。
- end - 最终读数结束的索引,默认值是整个缓冲区。
转换缓冲到JSON
1 | buf.toJSON() |
执行
1 | var buf = new Buffer('Simply Easy Learning'); |
输出
[ 83, 105, 109, 112, 108, 121, 32, 69, 97, 115, 121, 32, 76, 101, 97, 114, 110, 105, 110, 103 ]
接续缓冲器
以下是连接Node缓存到单个节点缓存方法的语法:
1 | Buffer.concat(list[, totalLength]) |
参数
list -要连接缓冲区的数组对象列表
totalLength - 这是缓冲器连接在一起时的总长度
示例
1
2
3
4var buffer1 = new Buffer('YiiBai ');
var buffer2 = new Buffer('Simply Easy Learning');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 content: " + buffer3.toString());
输出
buffer3 content: YiiBai Simply Easy Learning
比较缓冲器
下面是比较两个Node缓冲器的方法的语法:
1 | buf.compare(otherBuffer); |
otherBuffer - 这是将与被比较的其它缓冲 buf
示例
1 | var buffer1 = new Buffer('ABC'); |
输出 ABC comes before ABCD
复制缓存区
1 | buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd]) |
- targetBuffer - 缓冲区对象的缓冲区将被复制。
- targetStart - 数量,可选,默认:0
- sourceStart - 数量,可选,默认:0
- sourceEnd - 数量,可选,默认:buffer.length
返回值
没有返回值。拷贝数据从该缓冲器的一区域中,即使在目标内存区域与源重叠的目标缓冲器的区域。如果不确定targetStart,那么sourceStart参数默认为0,sourceEnd默认为buffer.length
示例
1 | var buffer1 = new Buffer('ABC'); |
输出 buffer2 content: ABC
缓存区长度
1 | var buffer = new Buffer('YiiBai'); |