[关闭]
@JRuiCoder 2015-06-27T15:17:27.000000Z 字数 1559 阅读 1304

NodeJS简介

NodeJS


1、I/O操作

I/O操作和本地函数调用的处理方式相同:处理过程需要一直等待知道某个操作结束才能继续下去。阻塞式编程继承早期的分时系统分时系统,每一个进程对应着一个用户,使用户们相互隔离。
多线程编程模型是另一个选择,与同一进程内的其他线程共享内存。

2、事件驱动编程风格(异步编程)介绍

事件驱动编程是指程序的执行流程取决于时间的编程风格,事件由事件处理程序或者事件回调函数进行处理。
事件驱动程序编程风格和事件循环相伴相生。

3、加载模块

加载和导出模块

var module=require('module_name'); //加载模块
function change(a){
// do something
}

module.exports=change// 导出模块

1、加载核心模块

只能通过模块名引用,而不能通过文件路径引用,存在一个与其同名的第三方模块优先使用核心模块
var http=require('http')

2、加载文件模块

一般忽略文件拓展名.js,如果找不到,会自动加上.js扩展名.
var myModule=require('/home/my_module')

3、加载文件夹模块

var myModule=require('./myModuleDir');
会查找文件夹里是否有package.json的文件,如果文件夹中不存在包定义文件,默认index.js

4、从node_modules文件夹加载

如果一个模块名既不是相对路径,也不是核心模块,Node就会在当前目录下的node_modules文件夹中查找。最好让NPM管理模块。

5、缓存模块

模块在首次加载时会被缓存起来,模块的初始化过程只执行了一次,
Node取消了JavaScript默认的全局变量名称控件,而用CommonJS模块系统取而代之。

4、缓存

JavaScript擅长于处理字符串,对于二进制数据不是特别擅长。
创建一个缓存区

使用UTF-8编码格式的字符串来创建缓存区.

var buf=new Buffer('Hello World');

可以指定编码格式作为构造函数的第二个参数,也可以用其他编码格式的字符串创建缓冲区

var buf=new Buffer('asdfas3','base64')

如果缓存区没有用具体内容初始化,则可以通过指定容量大小来创建缓存区,可以通过指定长度创建新的缓存区.

var buf= new Buffer(1024)

在缓存区中获取和设置数据

var buf =new Buffer('my buffer content');
//访问buf缓冲区的第10个字节
console.log(buf[10])

创建一个已被初始化的缓冲区时,缓存区包含的数据并非是0,而是一些随机值。
切分缓存区

var buffer=new Buffer('this is the content');
var littleBuffer=buffer.slice(8,19);
console.log(littleBuffer.toString()); //the content

还是使用父缓存区域,只是引用了父缓冲区不同的起始位置或结束位置。但是这样的话父缓冲器在操作结束依然被继续保持,不会被回收。
复制缓冲区

var buffer1=new Buffer('the content is content');
var buffer2=new Buffer(11);
var targetStart=0;
var sourceStart=9;
var soureceEnd=19;
buffer1.copy(buffer2,targetStart,sourceStart,sourceEnd); //将源缓冲区的9和19位置上的数据复制到目标缓冲区的起始位置。

缓冲区解码

var b64Str=buf.toString('bae64')
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注