最近在学习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的第一个步学习总结,是一些基本的使用和常用模块的介绍,以后做详细总结。

nodejs 实现机制的更多相关文章

  1. NodeJS缓存机制:畅销货,就多囤一点呗

    上一篇文章,我们已经实现了客户端向NodeJS服务器发出请求时,服务器从磁盘读取文件内容后,向客户端返回文件的数据.而对于爱莲(iLinkIT)的1对n的场景,即将文件共享出来之后,让多个用户同时下载 ...

  2. nodejs运行机制

    有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下: 1.简介 Node.js是一个事件驱动I/O服务端JavaScript环 ...

  3. 通过Anuglar Material串串学客户端开发 - NodeJS模块机制之Module.Exports

    module.exports 前文讲到在Angular Material的第二个编译文件docs/gulpfile.js中却看到了一个奇怪的东西module.exports那么module.expor ...

  4. nodejs 事件机制

    node 事件机制   一 三种定时器 NodeJS中有三种类型的定时器:超时时间.时间间隔.即时定时器 1.超时时间:setTimeout(callback,delayMilliSeconds,[a ...

  5. 图形验证插件,百度编辑器拓展功能,NodeJs消息机制以及聊天室

    图形验证插件 网上找了很多图形验证插件,比较推荐verify.js <link rel="stylesheet" type="text/css" href ...

  6. nodejs事件机制

    var EventEmitter = function() { this.evts = {}; }; EventEmitter.prototype = { constructor: EventEmit ...

  7. 【前端知识体系-NodeJS相关】对NodeJS模块机制的理解

    1. CommonJS模块规范 1.1 模块引用 var math = require('math'); 1.2 模块定义 [!NOTE] 上下文提供exports对象用于导出当前模块的方法和变量,并 ...

  8. 【原创】分布式之数据库和缓存双写一致性方案解析(三) 前端面试送命题(二)-callback,promise,generator,async-await JS的进阶技巧 前端面试送命题(一)-JS三座大山 Nodejs的运行原理-科普篇 优化设计提高sql类数据库的性能 简单理解token机制

    [原创]分布式之数据库和缓存双写一致性方案解析(三)   正文 博主本来觉得,<分布式之数据库和缓存双写一致性方案解析>,一文已经十分清晰.然而这一两天,有人在微信上私聊我,觉得应该要采用 ...

  9. 遇见NodeJS:JavaScript的贵人

    在大家的印象中,相当长一段时间里,JavaScript是一门脚本语言,一般不能成为某个项目的担纲主角,作用只是在浏览器里帮忙校验校验输入是不是正确,响应一下鼠标.键盘事件,或者让某个HTML元素动起来 ...

随机推荐

  1. CentOS的Redis内存分配策略配置

    安装了一主两从节点,启动之后发现有一个警告: 大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决. 然后,不太懂这个配置的含义,google一把 ...

  2. A Tour of Go If

    The if statement looks as it does in C or Java, except that the ( ) are gone and the { } are require ...

  3. Robot Framework自动化测试(三)--- 封装系统关键字

    之前对robotframework-ride了解的不多,后来知道了引入Selenium2Lirary库后可以做web UI自动化测试,但发现和python没啥关系,今天学习了封装系统关键字算是和pyt ...

  4. spring websocket Converters must not be empty

    此文件    WebSocketConfig.java public class WebSocketConfig implements WebSocketMessageBrokerConfigurer ...

  5. AndroidPN中的心跳检测

    在AndroidPN客户端里存在着心跳检测功能.就是每隔一段时间客户端向服务器端发送一个消息,以检测连接是否正常,发送的消息内容为: <presence id="h09Ke-13&qu ...

  6. mysqld --debug-sync

    http://hedengcheng.com/?p=238https://dev.mysql.com/doc/internals/en/debug-sync-facility.html mysqld ...

  7. C#中Enum用法小结

      enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储. (1)默认情况下,枚举中的第一个变量被赋值为0,其他的变量的值按定义的顺序来递增(0,12,3...),因此 ...

  8. byte数组与对象之间的相互转换

    在进行网络通信时可能需要传输对象,如果用NIO的话,只能用Bytebuffer和channel直接 通过ByteArray*Stream和Object*Stream可以将byte数组和对象进行相互的转 ...

  9. php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

  10. 对于POI的XSSFCell 类型问题

    1.XSSFCell.CELL_TYPE_BLANK 2.XSSFCell.CELL_TYPE_BOOLEAN 取值方式:cell.getBooleanCellValue() 3.XSSFCell.C ...