nodejs 实现机制

时间:2023-03-09 16:04:28
nodejs 实现机制

最近在学习nodejs,作为一个从未学过javascript的程序员,把自己学习的过程贴出来,当做记录和总结吧。

1、 nodejs的原理:

nodejs完全是基于事件轮询机制的一个javascript框架,内部有维护一个事件的队列,每一个事件id对应一个响应函数,进程循环读取队列的事件,调用响应函数进行处理,注册到调用是一个异步过程,其实和c语言里面的注册回调函数,然后调用回调函数的流程一样,整个实现机制比较简单,只是使用js写出来的可能更容易上手。

2、 nodejs通过模块来实现封装性的,每一个模块就是对一些功能函数和变量的封装,通常写在一个.js文件中,例如:

封装一个做加法和减法运算的模块,math.js 如下:

exports.add = function(a, b){

return a+b;

};

exports.sub = function(a, b){

return a-b;

};

exports用来申明函数能够被其他模块外部调用,就类似于public的作用(如果不使用exports则类似于private,不能被外部调用),其他模块通过require("math"); 来引用

例如:

var sum = require("math").add(100,10);

3、nodejs中有一些内建的核心模块,这些是已经编译好的二进制文件,如http模块,require("http");

如果我们自定义模块的文件名和这个名字相同,调用的时候,也只会调用系统内建核心模块,因此请避免不要重名。

4、nodejs中有一些全局的变量可以随时调用,类似于做浏览器开发会用到的session等,例如process变量代表进程自身,console代表终端等。

console.log("hello world");

5、终端上输入使用process.stdin,默认是关闭的,需要使用process.stdin.resume(); 使用下面的方式监听数据输入:

process.stdin.on("data", function(data){

console.log(data);

});

6、Buffer模块类似于其他语言中申请的动态内存(例如c语言的malloc分配,c++的new出来的空间),可以存放各种数据,使用var buff = new Buffer(1000);申请1000字节的空间.

7、net模块负责网络通信,应该使用较多,毕竟nodejs在实时页面方面比较有优势,那么必然涉及到网络通信,这里不详细说,下节写个基于cs模式的聊天练练手吧。

8、http模块是nodejs中使用比较多的一个模块,用来处理http相关的东西,还在学习中,准备结合html5弄个实时web聊天的东西出来练练手,以后再专门总结下。

以上是对nodejs的第一个步学习总结,是一些基本的使用和常用模块的介绍,以后做详细总结。