最近在学习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. Codeforces295A - Greg and Array(线段树的成段更新)

    题目大意 给定一个序列a[1],a[2]--a[n] 接下来给出m种操作,每种操作是以下形式的: l r d 表示把区间[l,r]内的每一个数都加上一个值d 之后有k个操作,每个操作是以下形式的: x ...

  2. ServletContext获取项目真实路径

    import javax.servlet.ServletContext; import org.springframework.web.context.ServletContextAware; /** ...

  3. 第三周作业、实时操作系统µC/OS介绍及其它内容

    作业要求 见<实时控制软件设计>第三周作业 1 阅读笔记--µC/OS 1.1 基本介绍 µC/OS是由Micrium公司研发的实时操作系统,以µC/OS-II或µC/OS-III为内核, ...

  4. Wix#可以直接写C#代码来生成Wix的MSI安装文

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Wix#可以直接写C#代码来生成Wix的MSI安装文.

  5. redis缓存技术

    初学redis缓存技术,如果文章写得不好还请谅解 应用环境:win7 实现环境:cmd,eclipse redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以 ...

  6. HDU 3333 & 3874 (线段树+离线询问)

    两个题目都是求区间之内,不重复的数字之和,3333需要离散化处理................. 调试了一下午........说多了都是泪........... #include <iostr ...

  7. Ubuntu下开启root登陆

    亲手安装过Ubuntu的童鞋都知道,默认安装只会添加一个普通用户名和密码,而超级用户权限则是利用sudo命令来执行.在Ubuntu下使用root登陆或者在shell中用su命令切换到root时会提示错 ...

  8. MHA工作原理

    http://my.oschina.net/u/1440383/blog/313798?fromerr=Tvth3ODF

  9. insert例子

    11.20 使用insert代替下标操作. #include<iostream> #include<map> #include<string> #include&l ...

  10. Ubuntu远程桌面xrdp方法

    xrdp方式,该方法支持多用户登录并远程桌面. 首先在Ubuntu上安装GNOME界面,在终端输入命令: sudo apt-get install gnome-panel 安装完成后注销用户. 点击自 ...