nodejs 实现机制
2013-11-19 23:39
204 查看
最近在学习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的第一个步学习总结,是一些基本的使用和常用模块的介绍,以后做详细总结。
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的第一个步学习总结,是一些基本的使用和常用模块的介绍,以后做详细总结。
相关文章推荐
- nodejs中简单实现Javascript Promise机制的实例
- nodejs中简单实现Javascript Promise机制的实例
- 游戏任务成就体系的实现(附六):NodeJS TCP机制搭建服务器
- 理解nodejs的stream和pipe机制的原理和实现
- note.js之 Mongodb在Nodejs上的配置及session会话机制的实现
- tasklet实现机制
- SSM 之《深入理解mybatis原理》 MyBatis缓存机制的设计与实现
- 解读Android LOG机制的实现
- android 5.0 支持的z轴实现机制
- NodeJs模块加载机制
- C++实现委托机制(三)——lambda表达式封装
- Java高级:动态绑定实现机制
- Spring AOP两种实现机制是什么?
- ArcgisServer9.3 中矩形选择查询的实现(利用callback机制)
- Linux系统调用的实现机制分析
- Android--利用Handler消息转发机制实现倒计时(内含防止内存泄露处理)
- 【探讨】javascript事件机制底层实现原理
- 浅析FreeRTOS_v4.5.0延时机制---vTaskDelay()的实现
- CLH锁的机制与实现
- Javascript 继承机制的实现